home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 22 / Cream of the Crop 22.iso / windows / sw14c.zip / SIMPWN14.ZIP / simptut.c < prev    next >
C/C++ Source or Header  |  1996-10-30  |  69KB  |  3,036 lines

  1. # include <dos.h>
  2. # include <string.h>
  3. # include <stdio.h>
  4. # include <bios.h>
  5. # include <stdlib.h>
  6. # include <conio.h>
  7. # include <mem.h>
  8.  
  9. /***************************************************************************
  10.  
  11.       simple windows includes
  12.  
  13. ***************************************************************************/
  14.  
  15. # include "simpwin.h"
  16. # include "skdef.h"
  17. # include "mouse21.h"
  18.  
  19. /***************************************************************************
  20.  
  21.       window call defines
  22.  
  23. ***************************************************************************/
  24.  
  25. # define MAIN_WIN 1
  26. # define DEMO_WIN 2
  27. # define TEXT_WIN 3
  28. # define FONT_TEXT 4
  29. # define FONT_WIN 5
  30. # define QUIT_WIN 6
  31. # define FUNG_WIN 7
  32. # define DEMO_TEXT 8
  33. # define ENTER_WIN 9
  34. # define EDIT_WIN 10
  35. # define OPT_WIN 19
  36.  
  37. /***************************************************************************
  38.  
  39.       menu call defines
  40.  
  41. ***************************************************************************/
  42.  
  43. # define MAIN_MENU 0
  44. # define DEMO_MENU 1
  45. # define TEXT_MENU 2
  46. # define FONT_TEXT_MENU 3
  47. # define FONT_MENU 4
  48. # define CAP_MENU 6
  49. # define FUNG_MENU 5
  50. # define SHADOW_MENU 7
  51. # define BOARDER_MENU 8
  52. # define ENTER_MENU 9
  53. # define EDIT_MENU 10
  54. # define SCREEN_MENU 11
  55. # define FORM_MENU 12
  56. # define SONG_MENU 13
  57. # define OPT_MENU_1 14
  58. # define OPT_MENU_2 15
  59. # define OPT_MENU 16
  60.  
  61. /***************************************************************************
  62.  
  63.       fungtion prototypes
  64.  
  65. ***************************************************************************/
  66.  
  67. int font_demo(void);
  68. int main_menu(void);
  69. int quit(void);
  70. int demo_menu(void);
  71. int tutor_menu(void);
  72. int tut_menu(void);
  73. int demo_popup(void);
  74. int shad_demo(void);
  75. int boarder_demo(void);
  76. int enter_demo(void);
  77. int data_ok(void);
  78. int scr_form(void);
  79. int song_demo(void);
  80. void view_text(int file_num);
  81. int reg_form(void);
  82. void view_tut(int file_num,char *lable);
  83. void reed_text(char *file_name);
  84. int option_menu(void);
  85. int o_menu(void);
  86. void get_port(void);
  87. int save_option(int save_switch);
  88. int change_window(char lable[9][15]);
  89. int boarder_select(void);
  90. int shadow_select(void);
  91. int color_select(void);
  92. void write_data(int record);
  93. void save_data(void);
  94. int get_color(void);
  95. int mou_menu(void);
  96.  
  97. typedef struct
  98. {
  99.     int port;
  100.     int hk_color;
  101.     char font[15];
  102.     int data[8][8];
  103. } O_DATA;
  104.  
  105.  
  106. int mou_switch,port_number,win_num = 0,color_code,display_switch = 1;
  107. O_DATA o_data;
  108. char *edit_buff,font_string[255];
  109. char *t_buff;
  110.  
  111. void main(void)
  112. {
  113.     int i,j,k;
  114.  
  115. /****************************************************************************
  116.  
  117.     load system file
  118.  
  119. ****************************************************************************/
  120.  
  121.  
  122.     init_window(2,1,1,"",1);
  123.     read_file(&o_data,"simptut.sys",sizeof(O_DATA),0L);
  124.     strcpy(font_string,"lfsw14 ");
  125.     strcat(font_string,o_data.font);
  126.     system(font_string);
  127.     hide_cursor();
  128.     system("cls");
  129.  
  130. /***************************************************************************
  131.  
  132.     check for enough memory
  133.  
  134. ***************************************************************************/
  135.  
  136.     if(((edit_buff = (char *)malloc(22 * 80)) == NULL) |
  137.         ((t_buff = (char *)malloc(4000)) == NULL))
  138.     {       popup_window(0,1,25,80,25,0,0,14,4,1,0,0,0,0);
  139.         write_window(3,2,"Not enough memory!");
  140.         exit(1);
  141.     }
  142.     memset(edit_buff,0,(22 * 80));
  143.  
  144. /****************************************************************************
  145.  
  146.     initialize simple windows anf mouse21
  147.  
  148. ***************************************************************************/
  149.  
  150.     port_number = o_data.port;
  151.     if(init_window(30,20,4,"",port_number) == 1)
  152.     {
  153.         simp_window(1,25,80,25,0,0,14,4,1,0,0,0,0);
  154.         gotoxy(3,2);
  155.         cprintf("Unable to install simple windows");
  156.         exit(1);
  157.     }
  158.     if(mouinstalled() != 0)
  159.     {
  160.         loadcurs("cursor.fnt",0);
  161.         moureset();
  162.         mouhide();
  163.         mousetposition(1,1);
  164.         mou_off();
  165.  
  166.         mou_switch = 1;
  167.         simp_window(30,10,50,12,1,0,14,4,0,0,0,0,0);
  168.         write_window(3,2,"Mouse Installed !");
  169.         delay(1000);
  170.     }
  171.     else
  172.     {
  173.         simp_window(23,10,57,12,1,0,14,4,0,0,0,0,0);
  174.         write_window(3,2,"NO mouse driver installed");
  175.         delay(1000);
  176.     }
  177.  
  178.     if(load_menu_text("simptut.men") != 0)
  179.     {
  180.         uninit_window();
  181.         free(edit_buff);
  182.         exit(1);
  183.     }
  184.     load_win_data("simptut.win");
  185.     save_data();
  186.  
  187. /***************************************************************************
  188.  
  189.     make title screen
  190.  
  191. ****************************************************************************/
  192.  
  193.     k= 3;
  194.     for(i = 0;i < 13;i++)
  195.     {
  196.         for(j = k - 3;j < k;j++)
  197.         {
  198.             simp_window(40 - j,13 - i,40 + j,13 + i,o_data.data[0][0],
  199.                 o_data.data[0][1],o_data.data[0][2],o_data.data[0][3],
  200.                 o_data.data[0][4],o_data.data[0][5],o_data.data[0][6],
  201.                 o_data.data[0][7],0);
  202.         }
  203.         k = k + 3;
  204.     }
  205.     simp_window(1,1,80,25,o_data.data[0][0],o_data.data[0][1],o_data.data[0][2],
  206.         o_data.data[0][3],o_data.data[0][4],o_data.data[0][5],
  207.         o_data.data[0][6],o_data.data[0][7],0);
  208.     k = 3;
  209.     for(i = 0;i < 13;i++)
  210.     {
  211.         for(j = k - 3;j < k;j++)
  212.         {
  213.             window(40 - j,13 - i,40 + j,13 + i);
  214.             load_screen_form(0,"simptut.scr");
  215.         }
  216.         k = k + 3;
  217.     }
  218.     window(1,1,80,25);
  219.     load_screen_form(0,"simptut.scr");
  220.     write_window(35,25," HIT ANY KEY ");
  221.     bioskey(0);
  222.     save_screen(1);
  223.  
  224. /****************************************************************************
  225.  
  226.     run program menu system
  227.  
  228. ***************************************************************************/
  229.     hide_cursor();
  230.     while(main_menu())
  231.     {
  232.     }
  233.  
  234. /***************************************************************************
  235.  
  236.     uninitialize simple windows and exit
  237.  
  238. ****************************************************************************/
  239.  
  240.     free(edit_buff);
  241.     uninit_window();
  242.     show_cursor();
  243.     system("lfsw14 ibmstd.fnt");
  244.     system("cls");
  245. }
  246.  
  247. /**************************************************************************
  248.  
  249.     This is a typical menu fungtion. I will comment this one only
  250.     to save on redundancy. All the other menuing moduals are similar.
  251.  
  252. **************************************************************************/
  253.  
  254. int font_demo(void)
  255. {
  256.     int i,pick,choice,oldmx = -1,oldmy = - 1,old_i = 9,mousex = 0,mousey = 0;
  257.     char lable[8][13] = {"Roman","Script","Antique","Brodway","saNserif",
  258.         "Courrier","Medieval","Ibmstd"};
  259.  
  260. /**************************************************************************
  261.  
  262.     draw window and menu with hilght
  263.  
  264. **************************************************************************/
  265.  
  266.     load_screen(3);
  267.     call_window(FONT_TEXT);
  268.     call_menu(FONT_TEXT_MENU,3,2);
  269.     write_window(16,10," HIT ANY KEY ");
  270.     bioskey(0);
  271.     call_window(FONT_WIN);
  272.     write_window(5,1," FONTS ");
  273.     call_menu(FONT_MENU,3,2);
  274.     textcolor(o_data.hk_color);
  275.     write_window(3,2,"R");
  276.     write_window(3,3,"S");
  277.     write_window(3,4,"A");
  278.     write_window(3,5,"B");
  279.     write_window(5,6,"N");
  280.     write_window(3,7,"C");
  281.     write_window(3,8,"M");
  282.     write_window(3,9,"I");
  283.     save_screen_buff();
  284.  
  285. /***************************************************************************
  286.  
  287.     This is the cursor and mouse control
  288.  
  289. ***************************************************************************/
  290.  
  291.     i = 0;
  292.     for(;;)
  293.     {
  294.         choice = 0;
  295.     /******************************************************************
  296.  
  297.         This tells where is mouse
  298.  
  299.     ******************************************************************/
  300.         mouposition(&mousex,&mousey);
  301.         if((mousex != oldmx || mousey != oldmy) & (mou_switch == 1))
  302.         {
  303.             mou_on();
  304.             oldmx = mousex;
  305.             oldmy = mousey;
  306.             if((mousex > 30 ) & (mousex < 45 ))
  307.             {
  308.                 i = mousey - 7;
  309.             }
  310.         }
  311.     /******************************************************************
  312.  
  313.         This checks for key entery
  314.  
  315.     ******************************************************************/
  316.         if(bioskey(1))
  317.         {
  318.             switch(bioskey(0))
  319.             {
  320.                 case ESC : choice = 10; break;
  321.                 case ENTER : choice = 1; break;
  322.                 case CURSOR_UP : i = i - 1; break;
  323.                 case CURSOR_DN : i = i + 1; break;
  324.                 case ALT_R : choice = 2; break;
  325.                 case ALT_S : choice = 3; break;
  326.                 case ALT_A : choice = 4; break;
  327.                 case ALT_B : choice = 5; break;
  328.                 case ALT_N : choice = 6; break;
  329.                 case ALT_C : choice = 7; break;
  330.                 case ALT_M : choice = 8; break;
  331.                 case ALT_I : choice = 9; break;
  332.             }
  333.         }
  334.     /******************************************************************
  335.  
  336.         this is for cursor control
  337.  
  338.     ******************************************************************/
  339.  
  340.         if(i < 0)
  341.         {
  342.             i = 0;
  343.         }
  344.         if(i > 7)
  345.         {
  346.             i = 7;
  347.         }
  348.  
  349.     /******************************************************************
  350.  
  351.         this draws shadowed hilight
  352.  
  353.     ********************************************************************/
  354.  
  355.         if(old_i != i)
  356.         {
  357.             old_i = i;
  358.             mou_off();
  359.             load_screen_buff();
  360.             simp_window(31,7 + i,44,7 + i,o_data.data[7][0],o_data.data[7][1],
  361.                 o_data.data[7][2],o_data.data[7][3],o_data.data[7][4],
  362.                 o_data.data[7][5],o_data.data[7][6],o_data.data[7][7],0);
  363.             write_window(2,1,"%s",lable[i]);
  364.             mou_on();
  365.         }
  366.  
  367.     /******************************************************************
  368.  
  369.         this checks mouse button
  370.  
  371.     ******************************************************************/
  372.  
  373.         if(moubuttonpressed(0))
  374.         {
  375.             if((mousex < 45) & (mousex > 30) & (mousey > 6) & (mousey < 15))
  376.             {
  377.                 choice = 1;
  378.             }
  379.         }
  380.         if(choice != 0)
  381.         {
  382.             break;
  383.         }
  384.     }
  385.  
  386.     mou_off();
  387.     load_screen_buff();
  388.  
  389. /************************************************************************
  390.  
  391.     this check to see if there is a selection
  392.  
  393. ************************************************************************/
  394.  
  395.     if(choice == 1)
  396.     {
  397.         choice = i + 2;
  398.     }
  399.     pick = 1;
  400.     switch(choice)
  401.     {
  402.         case 2 :
  403.         case 3 :
  404.         case 4 :
  405.         case 5 :
  406.         case 6 :
  407.         case 7 :
  408.         case 8 :
  409.         case 9 : strcpy(o_data.font,lable[i]); break;
  410.     }
  411.     if(choice != 10)
  412.     {
  413.         strcat(o_data.font,".fnt");
  414.         strcpy(font_string,"lfsw14 ");
  415.         strcat(font_string,o_data.font);
  416.         system(font_string);
  417.     }
  418.     load_screen_buff();
  419.     uncall_window(FONT_WIN);
  420.     uncall_window(FONT_TEXT);
  421.     display_switch = 0;
  422.     return(pick);
  423. }
  424.  
  425. int main_menu(void)
  426. {
  427.     int pick,choice,i = 0,old_i = 9,oldmx = -1,oldmy = -1,mousex = 0,mousey = 0;
  428.     char lable[4][13] = {"Demo","Text","Options","eXit"};
  429.  
  430. /***************************************************************************
  431.  
  432.     this code is used to get rid of window flash
  433.  
  434. **************************************************************************/
  435.  
  436.     if(display_switch)
  437.     {
  438.         load_screen(1);
  439.         call_window(MAIN_WIN);
  440.         call_menu(MAIN_MENU,3,2);
  441.         save_screen(2);
  442.     }
  443.     else
  444.     {
  445.         load_screen(2);
  446.     }
  447.  
  448. /**************************************************************************/
  449.  
  450.     display_switch = 1;
  451.     textcolor(o_data.hk_color);
  452.     write_window(3,2,"D");
  453.     write_window(15,2,"T");
  454.     write_window(28,2,"O");
  455.     write_window(43,2,"X");
  456.     save_screen_buff();
  457.     i = 0;
  458.     for(;;)
  459.     {
  460.         choice = 0;
  461.         mouposition(&mousex,&mousey);
  462.         if((mousex != oldmx || mousey != oldmy) & (mou_switch == 1))
  463.         {
  464.             mou_on();
  465.             oldmx = mousex;
  466.             oldmy = mousey;
  467.             if(mousey == 4)
  468.             {
  469.                 if((mousex > 5) & (mousex < 11))
  470.                 {
  471.                     i = 0;
  472.                 }
  473.                 else if((mousex > 17) & (mousex < 24))
  474.                 {
  475.                     i = 1;
  476.                 }
  477.                 else if((mousex > 30) & (mousex < 39))
  478.                 {
  479.                     i = 2;
  480.                 }
  481.                 else if((mousex > 44) & (mousex < 50))
  482.                 {
  483.                     i = 3;
  484.                 }
  485.             }
  486.         }
  487.         if(old_i != i)
  488.         {
  489.             mou_off();
  490.             old_i = i;
  491.             load_screen_buff();
  492.             switch(i)
  493.             {
  494.                 case 0 : simp_window(6,4,11,4,o_data.data[7][0],
  495.                      o_data.data[7][1],o_data.data[7][2],o_data.data[7][3],
  496.                      o_data.data[7][4],o_data.data[7][5],o_data.data[7][6],
  497.                      o_data.data[7][7],0); break;
  498.                 case 1 : simp_window(18,4,24,4,o_data.data[7][0],o_data.data[7][1],
  499.                      o_data.data[7][2],o_data.data[7][3],o_data.data[7][4],
  500.                      o_data.data[7][5],o_data.data[7][6],o_data.data[7][7],0); break;
  501.                 case 2 : simp_window(31,4,39,4,o_data.data[7][0],o_data.data[7][1],
  502.                      o_data.data[7][2],o_data.data[7][3],o_data.data[7][4],
  503.                      o_data.data[7][5],o_data.data[7][6],o_data.data[7][7],0); break;
  504.                 case 3 : simp_window(45,4,50,4,o_data.data[7][0],o_data.data[7][1],
  505.                      o_data.data[7][2],o_data.data[7][3],o_data.data[7][4],
  506.                      o_data.data[7][5],o_data.data[7][6],o_data.data[7][7],0); break;
  507.             }
  508.             write_window(2,1,"%s",lable[i]);
  509.             mou_on();
  510.         }
  511.         if(bioskey(1))
  512.         {
  513.             switch(bioskey(0))
  514.             {
  515.                 case ESC : choice = 6; break;
  516.                 case CURSOR_RIGHT : i = i + 1; break;
  517.                 case CURSOR_LEFT : i = i - 1; break;
  518.                 case ENTER : choice = 1; break;
  519.                 case ALT_D : choice = 2; break;
  520.                 case ALT_T : choice = 3; break;
  521.                 case ALT_X : choice = 5; break;
  522.                 case ALT_O : choice = 4; break;
  523.             }
  524.         }
  525.         if(i < 0)
  526.         {
  527.             i = 0;
  528.         }
  529.         if(i > 3)
  530.         {
  531.             i = 3;
  532.         }
  533.         if(moubuttonpressed(LEFTBUTTON))
  534.         {
  535.             if(mousey == 4)
  536.             {
  537.                 if(((mousex > 5) & (mousex < 11)) |
  538.                     ((mousex > 17) & (mousex < 24)) |
  539.                     ((mousex > 30) & (mousex < 39)) |
  540.                     ((mousex > 44) & (mousex < 50)))
  541.                 {
  542.                     choice = 1;
  543.                 }
  544.             }
  545.         }
  546.         if(choice != 0)
  547.         {
  548.             break;
  549.         }
  550.     }
  551.     mou_off();
  552.     load_screen_buff();
  553.     if(choice == 1)
  554.     {
  555.         choice = i + 2;
  556.     }
  557.     pick = 1;
  558.     switch(choice)
  559.     {
  560.         case 2 : while(demo_menu()){} break;
  561.         case 3 : while(tutor_menu()){} break;
  562.         case 4 : while(o_menu()){} break;
  563.         case 6 :
  564.         case 5 : pick = quit(); break;
  565.     }
  566.     return(pick);
  567. }
  568.  
  569. /*************************************************************************
  570.  
  571.     this modual ask if you are shure you wish to quit
  572.  
  573. ************************************************************************/
  574.  
  575. int quit(void)
  576. {
  577.     int pick = 1;
  578.  
  579.     show_cursor();
  580.     call_window(QUIT_WIN);
  581.     write_window(3,2,"Quit Y/N ?");
  582.     if(get_choice(14,2,"N"))
  583.     {
  584.         pick = 0;
  585.     }
  586.     uncall_window(QUIT_WIN);
  587.     hide_cursor();
  588.     return(pick);
  589. }
  590.  
  591. int demo_menu(void)
  592. {
  593.     int pick,choice,i = 0,old_i = 9,oldmx = -1,oldmy = -1,mousex = 0,mousey = 0;
  594.     char lable[6][13] = {"Capacity","Shadow","Boarder","Form",
  595.         "Music","Enteries"};
  596.  
  597.     if(display_switch)
  598.     {
  599.         load_screen(2);
  600.         call_window(DEMO_WIN);
  601.         call_menu(DEMO_MENU,3,2);
  602.         save_screen(3);
  603.     }
  604.     else
  605.     {
  606.         load_screen(3);
  607.     }
  608.     hide_cursor();
  609.     display_switch = 1;
  610.     textcolor(o_data.hk_color);
  611.     write_window(3,2,"C");
  612.     write_window(3,3,"S");
  613.     write_window(3,4,"B");
  614.     write_window(3,5,"F");
  615.     write_window(3,6,"M");
  616.     write_window(3,7,"E");
  617.     save_screen_buff();
  618.     i = 0;
  619.     for(;;)
  620.     {
  621.         choice = 0;
  622.         mouposition(&mousex,&mousey);
  623.         if((mousex != oldmx || mousey != oldmy) & (mou_switch == 1))
  624.         {
  625.             mou_on();
  626.             oldmx = mousex;
  627.             oldmy = mousey;
  628.             if((mousex > 7) & (mousex < 19))
  629.             {
  630.                 i = mousey - 5;
  631.             }
  632.         }
  633.         if(bioskey(1))
  634.         {
  635.             switch(bioskey(0))
  636.             {
  637.                 case ESC : choice = 9; break;
  638.                 case CURSOR_DN : i = i + 1; break;
  639.                 case CURSOR_UP : i = i - 1; break;
  640.                 case ENTER : choice = 1; break;
  641.                 case ALT_C : choice = 2; break;
  642.                 case ALT_S : choice = 3; break;
  643.                 case ALT_B : choice = 4; break;
  644.                 case ALT_F : choice = 5; break;
  645.                 case ALT_M : choice = 6; break;
  646.                 case ALT_E : choice = 7; break;
  647.             }
  648.         }
  649.         if(i < 0)
  650.         {
  651.             i = 0;
  652.         }
  653.         if(i > 5)
  654.         {
  655.             i = 5;
  656.         }
  657.         if(old_i != i)
  658.         {
  659.             old_i = i;
  660.             mou_off();
  661.             load_screen_buff();
  662.             simp_window(8,5 + i,18,5 + i,o_data.data[7][0],o_data.data[7][1],
  663.             o_data.data[7][2],o_data.data[7][3],o_data.data[7][4],
  664.             o_data.data[7][5],o_data.data[7][6],o_data.data[7][7],0);
  665.             write_window(2,1,"%s",lable[i]);
  666.             mou_on();
  667.         }
  668.         if(moubuttonpressed(0))
  669.         {
  670.             if((mousex > 7) & (mousex < 19) & (mousey > 4) & (mousey < 11))
  671.             {
  672.                 choice = 1;
  673.             }
  674.             else
  675.             {
  676.                 choice = 9;
  677.             }
  678.         }
  679.         if(choice != 0)
  680.         {
  681.             break;
  682.         }
  683.     }
  684.     mou_off();
  685.     load_screen_buff();
  686.     pick = 1;
  687.     if(choice == 1)
  688.     {
  689.         choice = i + 2;
  690.     }
  691.     switch(choice)
  692.     {
  693.         case 2 : while(demo_popup()){} break;
  694.         case 3 : while(shad_demo()){} break;
  695.         case 4 : while(boarder_demo()){} break;
  696.         case 5 : while(scr_form()){} break;
  697.         case 6 : while(song_demo()){} break;
  698.         case 7 : while(enter_demo()){} break;
  699.         case 9 : pick = 0; break;
  700.     }
  701.     hide_cursor();
  702.     display_switch = 0;
  703.     return(pick);
  704. }
  705.  
  706. int tutor_menu(void)
  707. {
  708.     int pick,choice,i = 0,old_i = 12,oldmx = -1,oldmy = - 1,mousex = 0,mousey = 0;
  709.     char lable[10][13] = {"Genral Info","Registration","Disclaimer",
  710.         "Fungtions","Later","Support","Quarks","Mouse","Change font","MAKEFILE.EXE"};
  711.  
  712.     if(display_switch)
  713.     {
  714.         load_screen(2);
  715.         call_window(TEXT_WIN);
  716.         call_menu(TEXT_MENU,3,2);
  717.         save_screen(3);
  718.     }
  719.     else
  720.     {
  721.         load_screen(3);
  722.     }
  723.     display_switch = 1;
  724.     textcolor(o_data.hk_color);
  725.     write_window(3,2,"G");
  726.     write_window(3,3,"R");
  727.     write_window(3,4,"D");
  728.     write_window(3,5,"F");
  729.     write_window(3,6,"L");
  730.     write_window(3,7,"S");
  731.     write_window(3,8,"Q");
  732.     write_window(3,9,"M");
  733.     write_window(3,10,"C");
  734.     write_window(5,11,"K");
  735.     save_screen_buff();
  736.     for(;;)
  737.     {
  738.         choice = 0;
  739.         mouposition(&mousex,&mousey);
  740.         if((mousex != oldmx || mousey != oldmy) & (mou_switch == 1))
  741.         {
  742.             mou_on();
  743.             oldmx = mousex;
  744.             oldmy = mousey;
  745.             if((mousex > 17) & (mousex < 32))
  746.             {
  747.                 i = mousey - 5;
  748.             }
  749.         }
  750.         if(bioskey(1))
  751.         {
  752.             switch(bioskey(0))
  753.             {
  754.                 case ESC : choice = 12; break;
  755.                 case CURSOR_DN : i = i + 1; break;
  756.                 case CURSOR_UP : i = i - 1; break;
  757.                 case ENTER : choice = 1; break;
  758.                 case ALT_G : choice = 2; break;
  759.                 case ALT_R : choice = 3; break;
  760.                 case ALT_D : choice = 4; break;
  761.                 case ALT_F : choice = 5; break;
  762.                 case ALT_L : choice = 6; break;
  763.                 case ALT_S : choice = 7; break;
  764.                 case ALT_Q : choice = 8; break;
  765.                 case ALT_M : choice = 9; break;
  766.                 case ALT_C : choice = 10; break;
  767.                 case ALT_K : choice = 11; break;
  768.             }
  769.         }
  770.         if(i < 0)
  771.         {
  772.             i = 0;
  773.         }
  774.         if(i > 9)
  775.         {
  776.             i = 9;
  777.         }
  778.         if(old_i != i)
  779.         {
  780.             old_i = i;
  781.             mou_off();
  782.             load_screen_buff();
  783.             simp_window(18,5 + i,31,5 + i,o_data.data[7][0],o_data.data[7][1],
  784.             o_data.data[7][2],o_data.data[7][3],o_data.data[7][4],
  785.             o_data.data[7][5],o_data.data[7][6],o_data.data[7][7],0);
  786.             write_window(2,1,"%s",lable[i]);
  787.             mou_on();
  788.         }
  789.         if(moubuttonpressed(0))
  790.         {
  791.             if((mousex > 17) & (mousex < 32) & (mousey > 4) & (mousey < 15))
  792.             {
  793.                 choice = 1;
  794.             }
  795.             else
  796.             {
  797.                 choice = 12;
  798.             }
  799.         }
  800.         if(choice != 0)
  801.         {
  802.             break;
  803.         }
  804.     }
  805.     mou_off();
  806.     load_screen_buff();
  807.     pick = 1;
  808.     if(choice == 1)
  809.     {
  810.         choice = i + 2;
  811.     }
  812.     switch(choice)
  813.     {
  814.         case 2 : view_text(0); break;
  815.         case 3 : reg_form(); break;
  816.         case 4 : reed_text("disclam.doc"); break;
  817.         case 5 : while(tut_menu()){} break;
  818.         case 6 : view_text(1); break;
  819.         case 7 : view_text(2); break;
  820.         case 8 : view_text(3); break;
  821.         case 9 : while(mou_menu()){} break;
  822.         case 10 : reed_text("loadfont.doc"); break;
  823.         case 11 : reed_text("makefile.txt"); break;
  824.         case 12 : pick = 0; break;
  825.     }
  826.     display_switch = 0;
  827.     unpopup_window(3);
  828.     return(pick);
  829. }
  830.  
  831. /**************************************************************************
  832.  
  833.     this is a complex menuing system with cursor and mouse
  834.  
  835. **************************************************************************/
  836.  
  837. int tut_menu(void)
  838. {
  839.     int pick,choice,i,j,oldmx = - 1,oldmy = - 1,old_i = 100,old_j = 4;
  840.     int mousex = 0,mousey = 0;
  841.         char lable[3][21][25] = {"simp_window\(\)","popup_window\(\)","make_window\(\)","call_window\(\)",
  842.         "uncall_window\(\)","unpopup_window\(\)","load_win_data\(\)","","",
  843.         "make_menu\(\)","load_menu_text\(\)","call_menu\(\)","load_text\(\)","","",
  844.         "get_choice\(\)","get_int_date\(\)","edit_string\(\)","get_string\(\)",
  845.         "get_int\(\)","get_long\(\)","print_printf\(\)","print_putch\(\)",
  846.         "print_horizontal_line\(\)","print_vertical_line\(\)","print_window\(\)",
  847.         "clear_print_buff\(\)","print_buff\(\)","load_form\(\)","print_char\(\)","","",
  848.         "draw_horizontal_line\(\)","draw_vertical_line\(\)","clear_window\(\)",
  849.         "move_window\(\)","show_cursor\(\)","hide_cursor\(\)","move_cursor\(\)",
  850.         "load_screen_form\(\)","write_window\(\)","read_text\(\)","set_tempo\(\)",
  851.         "tone\(\)","cord\(\)","playsong\(\)","","","read_file\(\)",
  852.         "write_file\(\)","file_to_file\(\)","copy_file\(\)","creat_file\(\)","read_directory\(\)",
  853.         "","","save_screen\(\)","load_screen\(\)","save_screen_buff\(\)",
  854.         "load_screen_buff\(\)","","init_window\(\)","uninit_window\(\)"};
  855.  
  856.     if(display_switch)
  857.     {
  858.         call_window(FUNG_WIN);
  859.         call_menu(FUNG_MENU,5,3);
  860.         write_window(32,1," FUNGTION MENU ");
  861.         save_screen(4);
  862.     }
  863.     else
  864.     {
  865.         load_screen(4);
  866.     }
  867.     save_screen_buff();
  868.     i = 0;
  869.     j = 0;
  870.     for(;;)
  871.     {
  872.         choice = 0;
  873.         mouposition(&mousex,&mousey);
  874.         if((mousex != oldmx || mousey != oldmy) & mou_switch)
  875.         {
  876.             mou_on();
  877.             oldmx = mousex;
  878.             oldmy = mousey;
  879.             if((mousex > 3) & (mousex < 25))
  880.             {
  881.                 i = mousey - 4;
  882.                 if((mousey > 2) & (mousey < 23))
  883.                 {
  884.                     j = 0;
  885.                 }
  886.             }
  887.             else if((mousex > 27) & (mousex < 56))
  888.             {
  889.                 i = mousey - 4;
  890.                 if((mousey > 3) & (mousey < 23))
  891.                 {
  892.                     j = 1;
  893.                 }
  894.             }
  895.             else if((mousex > 58) & (mousex < 80))
  896.             {
  897.                 i = mousey - 4;
  898.                 if((mousey > 3) & (mousey < 25))
  899.                 {
  900.                     j = 2;
  901.                 }
  902.             }
  903.  
  904.         }
  905.         if(bioskey(1))
  906.         {
  907.             switch(bioskey(0))
  908.             {
  909.                 case ESC : choice = 100; break;
  910.                 case ENTER : choice = 1; break;
  911.                 case CURSOR_UP : i = i - 1; break;
  912.                 case CURSOR_DN : i = i + 1; break;
  913.                 case CURSOR_RIGHT : j = j + 1; break;
  914.                 case CURSOR_LEFT : j = j - 1; break;
  915.             }
  916.         }
  917.         switch(j)
  918.         {
  919.             case 0 : switch(i)
  920.                  {
  921.                     case 7 : i = 9; break;
  922.                     case 8 : i = 6; break;
  923.                     case 13 : i = 15; break;
  924.                     case 14 : i = 12; break;
  925.                  }
  926.                  if(i < 0)
  927.                  {
  928.                     i = 0;
  929.                  }
  930.                  if(i > 20)
  931.                  {
  932.                     i = 0;
  933.                     j = 1;
  934.                  }
  935.                  break;
  936.             case 1 : switch(i)
  937.                  {
  938.                     case 9 : i = 11; break;
  939.                     case 10 : i = 8; break;
  940.                  }
  941.                  if(i < 0)
  942.                  {
  943.                     i = 20;
  944.                     j = 0;
  945.                  }
  946.                  else if(i > 20)
  947.                  {
  948.                     i = 0;
  949.                     j = 2;
  950.                  }
  951.                  break;
  952.             case 2 : switch(i)
  953.                  {
  954.                     case 4 : i = 6; break;
  955.                     case 5 : i = 3; break;
  956.                     case 12 : i = 14; break;
  957.                     case 13 : i = 11; break;
  958.                  }
  959.                  if((old_i < i) & (i == 18))
  960.                  {
  961.                     i = 19;
  962.                  }
  963.                  if((old_i > i) & (i == 18))
  964.                  {
  965.                     i = 17;
  966.                  }
  967.                  if(i < 0)
  968.                  {
  969.                     i = 20;
  970.                     j = 1;
  971.                  }
  972.                  else if(i > 20)
  973.                  {
  974.                     i = 20;
  975.                  }
  976.                  break;
  977.         }
  978.         if(j < 0)
  979.         {
  980.             j = 0;
  981.         }
  982.         if(j > 2)
  983.         {
  984.             j = 2;
  985.         }
  986.         if((old_i != i) | (old_j != j))
  987.         {
  988.             mou_off();
  989.             old_i = i;
  990.             old_j = j;
  991.             load_screen_buff();
  992.             switch(j)
  993.             {
  994.                 case 0 : simp_window(4,4 + i,4 + strlen(lable[j][i]) + 1,4 + i,
  995.                         o_data.data[7][0],o_data.data[7][1],o_data.data[7][2],
  996.                         o_data.data[7][3],o_data.data[7][4],o_data.data[7][5],
  997.                         o_data.data[7][6],o_data.data[7][7],0); break;
  998.                 case 1 : simp_window(28,4 + i,28 + strlen(lable[j][i]) + 1,4 + i,
  999.                         o_data.data[7][0],o_data.data[7][1],o_data.data[7][2],
  1000.                         o_data.data[7][3],o_data.data[7][4],o_data.data[7][5],
  1001.                         o_data.data[7][6],o_data.data[7][7],0); break;
  1002.                 case 2 : simp_window(59,4 + i,59 + strlen(lable[j][i]) + 1,4 + i,
  1003.                         o_data.data[7][0],o_data.data[7][1],o_data.data[7][2],
  1004.                         o_data.data[7][3],o_data.data[7][4],o_data.data[7][5],
  1005.                         o_data.data[7][6],o_data.data[7][7],0); break;
  1006.             }
  1007.             write_window(2,1,"%s",lable[j][i]);
  1008.             mou_on();
  1009.         }
  1010.         if(moubuttonrelease(0))
  1011.         {
  1012.             if(((mousex > 3) & (mousex < strlen(lable[0][i]) + 5)) |
  1013.                 ((mousex > 27) & (mousex < strlen(lable[1][i]) + 31)) |
  1014.                 ((mousex > 58) & (mousex < strlen(lable[2][i]) + 62)))
  1015.             {
  1016.                 choice = 1;
  1017.             }
  1018.         }
  1019.         if(choice != 0)
  1020.         {
  1021.             break;
  1022.         }
  1023.     }
  1024.     mou_off();
  1025.     load_screen_buff();
  1026.     pick = 1;
  1027.     if(choice == 1)
  1028.     {
  1029.         switch(j)
  1030.         {
  1031.             case 0 : switch(i)
  1032.                  {
  1033.                     case 0 : choice = 0; break;
  1034.                     case 1 : choice = 1; break;
  1035.                     case 2 : choice = 2; break;
  1036.                     case 3 : choice = 3; break;
  1037.                     case 4 : choice = 4; break;
  1038.                     case 5 : choice = 5; break;
  1039.                     case 6 : choice = 6; break;
  1040.                     case 9 : choice = 7; break;
  1041.                     case 10 : choice = 8; break;
  1042.                     case 11 : choice = 9; break;
  1043.                     case 12 : choice = 10; break;
  1044.                     case 15 : choice = 11; break;
  1045.                     case 16 : choice = 12; break;
  1046.                     case 17 : choice = 13; break;
  1047.                     case 18 : choice = 15; break;
  1048.                     case 19 : choice = 16; break;
  1049.                     case 20 : choice = 17; break;
  1050.                  }
  1051.                  break;
  1052.             case 1 : switch(i)
  1053.                  {
  1054.                     case 0 : choice = 18; break;
  1055.                     case 1 : choice = 19; break;
  1056.                     case 2 : choice = 20; break;
  1057.                     case 3 : choice = 21; break;
  1058.                     case 4 : choice = 22; break;
  1059.                     case 5 : choice = 23; break;
  1060.                     case 6 : choice = 24; break;
  1061.                     case 7 : choice = 25; break;
  1062.                     case 8 : choice = 52; break;
  1063.                     case 11 : choice = 26; break;
  1064.                     case 12 : choice = 27; break;
  1065.                     case 13 : choice = 28; break;
  1066.                     case 14 : choice = 29; break;
  1067.                     case 15 : choice = 30; break;
  1068.                     case 16 : choice = 31; break;
  1069.                     case 17 : choice = 32; break;
  1070.                     case 18 : choice = 33; break;
  1071.                     case 19 : choice = 34; break;
  1072.                     case 20 : choice = 35; break;
  1073.                  }
  1074.                  break;
  1075.             case 2 : switch(i)
  1076.                  {
  1077.                     case 0 : choice = 36; break;
  1078.                     case 1 : choice = 37; break;
  1079.                     case 2 : choice = 38; break;
  1080.                     case 3 : choice = 39; break;
  1081.                     case 6 : choice = 40; break;
  1082.                     case 7 : choice = 41; break;
  1083.                     case 8 : choice = 42; break;
  1084.                     case 9 : choice = 43; break;
  1085.                     case 10 : choice = 44; break;
  1086.                     case 11 : choice = 45; break;
  1087.                     case 14 : choice = 46; break;
  1088.                     case 15 : choice = 47; break;
  1089.                     case 16 : choice = 48; break;
  1090.                     case 17 : choice = 49; break;
  1091.                     case 19 : choice = 50; break;
  1092.                     case 20 : choice = 51; break;
  1093.                  }
  1094.         }
  1095.         view_tut(choice,lable[j][i]);
  1096.         switch(choice)
  1097.         {
  1098.             case 13 : view_tut(14,lable[j][i]); break;
  1099.         }
  1100.     }
  1101.     pick = 1;
  1102.     if(choice == 100)
  1103.     {
  1104.         pick = 0;
  1105.     }
  1106.     display_switch = 0;
  1107.     return(pick);
  1108. }
  1109.  
  1110. int demo_popup(void)
  1111. {
  1112.     long int free_space,block = 4056L,convert = 1;
  1113.     struct dfree space;
  1114.     char drive[3] = "C";
  1115.     unsigned char drive_num;
  1116.     int i,x,y,fore,back,num_file,done = 0;
  1117.     unsigned temp_num;
  1118.  
  1119.     call_window(DEMO_TEXT);
  1120.     call_menu(CAP_MENU,3,2);
  1121.     write_window(25,16," HIT ANY KEY ");
  1122.     bioskey(0);
  1123.  
  1124. /*************************************************************************
  1125.  
  1126.     this code asks for a drive letter and selects that drive
  1127.     for the utilitie files checking to see if there is enough
  1128.     memory
  1129.  
  1130. *************************************************************************/
  1131.  
  1132.     call_window(ENTER_WIN);
  1133.     write_window(3,2,"Enter drive letter :");
  1134.     show_cursor();
  1135.     if(get_string(drive," ","u",24,2,1,1) == 27)
  1136.     {
  1137.         hide_cursor();
  1138.         uncall_window(ENTER_WIN);
  1139.         uncall_window(DEMO_TEXT);
  1140.         return(0);
  1141.     }
  1142.     hide_cursor();
  1143.     switch(drive[0])
  1144.     {
  1145.         case 'A' : drive_num = 1; break;
  1146.         case 'B' : drive_num = 2; break;
  1147.         case 'C' : drive_num = 3; break;
  1148.         case 'D' : drive_num = 4; break;
  1149.         case 'E' : drive_num = 5; break;
  1150.         case 'F' : drive_num = 6; break;
  1151.         case 'G' : drive_num = 7; break;
  1152.         default : drive_num = 0; break;
  1153.     }
  1154.     getdfree(drive_num,&space);
  1155.     if(space.df_sclus == 0xffff)
  1156.     {
  1157.         popup_window(0,1,25,80,25,0,0,14,4,1,0,0,0,0);
  1158.         write_window(3,2,"No such drive or drive error!");
  1159.         bioskey(0);
  1160.         unpopup_window(0);
  1161.         uncall_window(ENTER_WIN);
  1162.         uncall_window(DEMO_TEXT);
  1163.         return(1);
  1164.     }
  1165.     free_space = (convert * space.df_avail * space.df_bsec * space.df_sclus);
  1166.     temp_num = free_space / block - 5;
  1167.     if(temp_num < 1)
  1168.     {
  1169.         popup_window(0,1,25,80,25,0,0,14,4,1,0,0,0,0);
  1170.         write_window(3,2,"Not enough disk space !");
  1171.         bioskey(0);
  1172.         unpopup_window(0);
  1173.         uncall_window(ENTER_WIN);
  1174.         uncall_window(DEMO_TEXT);
  1175.         return(1);
  1176.     }
  1177.     if(temp_num > 10000)
  1178.     {
  1179.         temp_num = 10000;
  1180.     }
  1181. /****************************************************************************/
  1182.  
  1183.     clear_window(0);
  1184.     write_window(3,2,"Enter number of popups:");
  1185.     num_file = temp_num;
  1186.     while(done == 0)
  1187.     {
  1188.         if(get_int(&num_file,5,27,2) == 1)
  1189.         {
  1190.             unpopup_window(9);
  1191.             unpopup_window(8);
  1192.             return(0);
  1193.         }
  1194.         if(num_file < 0)
  1195.         {
  1196.             clear_window(0);
  1197.             write_window(3,2,"Can't do negitive windows !");
  1198.             bioskey(0);
  1199.             clear_window(0);
  1200.             write_window(3,2,"Enter number of popups:");
  1201.             num_file = temp_num;
  1202.         }
  1203.         else
  1204.         {
  1205.             if(num_file > temp_num)
  1206.             {
  1207.                 clear_window(0);
  1208.                 write_window(3,2,"To many popups !");
  1209.                 bioskey(0);
  1210.                 clear_window(0);
  1211.                 write_window(3,2,"Enter number of popups:");
  1212.                 num_file = temp_num;
  1213.             }
  1214.             else
  1215.             {
  1216.                 done = 1;
  1217.             }
  1218.         }
  1219.     }
  1220.     unpopup_window(9);
  1221.     unpopup_window(8);
  1222.     creat_file("wntemp.win");
  1223.     creat_file("screen.scr");
  1224.     copy_file("win.dat","wntemp.win");
  1225.     copy_file("screen.dat","screen.scr");
  1226.     uninit_window();
  1227.     if(init_window(0,0,0,drive,port_number) == 0)
  1228.     {
  1229.         for(i = 1;i < num_file;i++)
  1230.         {
  1231.             x = (random(69) + 3);
  1232.             y = (random(20) + 2);
  1233.             fore = random(16);
  1234.             back = random(8);
  1235.             popup_window(i,x,y,x + 7,y + 2,1,2,fore,back,1,8,0,0,0);
  1236.             write_window(3,2,"%d",i);
  1237.         }
  1238.         popup_window(num_file,35,10,42,12,1,2,14,12,1,8,0,0,0);
  1239.         write_window(3,2,"%d",num_file);
  1240.         done = 0;
  1241.         while(done == 0)
  1242.         {
  1243.             for(i = 500;i < 1000;i++)
  1244.             {
  1245.                 sound(i);
  1246.                 delay(5);
  1247.                 if(bioskey(1))
  1248.                 {
  1249.                     done = 1;
  1250.                     break;
  1251.                 }
  1252.             }
  1253.             if(done == 1)
  1254.             {
  1255.                 break;
  1256.             }
  1257.             for(i = 1000;i > 500;i--)
  1258.             {
  1259.                 sound(i);
  1260.                 delay(5);
  1261.                 if(bioskey(1))
  1262.                 {
  1263.                     done = 1;
  1264.                     break;
  1265.                 }
  1266.             }
  1267.         }
  1268.         nosound();
  1269.         for(i = num_file; i > 0;i--)
  1270.         {
  1271.             unpopup_window(i);
  1272.         }
  1273.         uninit_window();
  1274.     }
  1275.     init_window(20,20,5,"",port_number);
  1276.     load_menu_text("simptut.men");
  1277.     load_win_data("wntemp.win");
  1278.     copy_file("screen.scr","screen.dat");
  1279.     remove("wntemp.win");
  1280.     remove("screen.scr");
  1281.     display_switch = 0;
  1282.     return(0);
  1283. }
  1284.  
  1285. int shad_demo(void)
  1286. {
  1287.     int fore,back,i;
  1288.  
  1289.     call_window(DEMO_TEXT);
  1290.     call_menu(SHADOW_MENU,8,5);
  1291.     write_window(25,16," HIT ANY KEY ");
  1292.     bioskey(0);
  1293.  
  1294.     for(i = 0;i < 3;i++)
  1295.     {
  1296.         popup_window(24,20,10,63,15,2,i,14,2,1,8,0,0,0);
  1297.         switch(i)
  1298.         {
  1299.             case 0 : write_window(3,3,"This is the 0 or NO_SHADOW style."); break;
  1300.             case 1 : write_window(3,3,"This is the 1 or WIDE_SHADOW style"); break;
  1301.             case 2 : write_window(3,3,"This is the 2 or NARROW_SHADOW style"); break;
  1302.         }
  1303.         write_window(15,6," HIT ANY KEY ");
  1304.         bioskey(0);
  1305.         unpopup_window(24);
  1306.     }
  1307.     for(i = 1;i < 5;i++)
  1308.     {
  1309.         popup_window(24,20,10,63,15,2,1,14,2,i,8,0,0,0);
  1310.         switch(i)
  1311.         {
  1312.             case 1 : write_window(3,3,"This is the 1 or LOWER LEFT location"); break;
  1313.             case 2 : write_window(3,3,"This is the 2 or UPPER_LEFT location"); break;
  1314.             case 3 : write_window(3,3,"This is the 3 or LOWER_RIGHT location"); break;
  1315.             case 4 : write_window(3,3,"This is the 4 or UPPER_RIGHT location"); break;
  1316.         }
  1317.         write_window(15,6," HIT ANY KEY ");
  1318.         bioskey(0);
  1319.         unpopup_window(24);
  1320.     }
  1321.     for(;;)
  1322.     {
  1323.         fore = random(16);
  1324.         back = random(8);
  1325.         popup_window(24,20,10,63,15,2,2,14,2,1,fore,back,0,0);
  1326.         write_window(15,6," HIT ANY KEY ");
  1327.         write_window(6,3,"These are the diffrent colors that");
  1328.         write_window(11,4,"you can use for shadows.");
  1329.         delay(700);
  1330.         if(bioskey(1))
  1331.         {
  1332.             bioskey(0);
  1333.             unpopup_window(24);
  1334.             break;
  1335.         }
  1336.     }
  1337.     uncall_window(DEMO_TEXT);
  1338.     display_switch = 0;
  1339.     return(0);
  1340. }
  1341.  
  1342. int boarder_demo(void)
  1343. {
  1344.     int i,char_boarder;
  1345.  
  1346.     save_screen_buff();
  1347.     strcpy(font_string,o_data.font);
  1348.     strcat(font_string," > font.tem");
  1349.     system(font_string);
  1350.     load_screen_buff();
  1351.     call_window(DEMO_TEXT);
  1352.     call_menu(BOARDER_MENU,10,5);
  1353.     write_window(25,16," HIT ANY KEY ");
  1354.     bioskey(0);
  1355.     for(i = 0;i <5;i++)
  1356.     {
  1357.         popup_window(24,20,10,60,15,i,2,14,2,1,8,0,0,0);
  1358.         switch(i)
  1359.         {
  1360.             case 0 : write_window(3,3,"This is the 0 or NO_BOARDER style."); break;
  1361.             case 1 : write_window(3,3,"This is the 1 or SINGLE_BOARDER style"); break;
  1362.             case 2 : write_window(3,3,"This is the 2 or DOUBLE_BOARDER style"); break;
  1363.             case 3 : write_window(3,3,"This is the 3 or SIG_DUB_BOARDER style"); break;
  1364.             case 4 : write_window(3,3,"This is the 4 or DUB_SIG_BOARDER style"); break;
  1365.         }
  1366.         write_window(15,6," HIT ANY KEY ");
  1367.         bioskey(0);
  1368.     }
  1369.     for(;;)
  1370.     {
  1371.         char_boarder = random(255);
  1372.         if(char_boarder < 15)
  1373.         {
  1374.             char_boarder = char_boarder + 15;
  1375.         }
  1376.         popup_window(24,20,10,60,15,5,2,14,2,1,8,0,char_boarder,0);
  1377.         write_window(15,3," HIT ANY KEY ");
  1378.         delay(700);
  1379.         if(bioskey(1))
  1380.         {
  1381.             bioskey(0);
  1382.             unpopup_window(24);
  1383.             break;
  1384.         }
  1385.     }
  1386.     uncall_window(DEMO_TEXT);
  1387.     display_switch = 0;
  1388.     return(0);
  1389. }
  1390.  
  1391. int enter_demo(void)
  1392. {
  1393.     int int_data = 0,date[3] = {4,1,94},j,i,done = 0,pick;
  1394.     long int long_data = 0;
  1395.     char enter_string[30] = "";
  1396.  
  1397.     creat_file("edit.tem");
  1398.     read_file(edit_buff,"edit.tem",(22 * 80),0L);
  1399.     call_window(DEMO_TEXT);
  1400.     call_menu(ENTER_MENU,10,5);
  1401.     write_window(25,16," HIT ANY KEY ");
  1402.     save_screen(4);
  1403.     bioskey(0);
  1404.     show_cursor();
  1405.     for(i = 0;i < 5;i++)
  1406.     {
  1407.         popup_window(24,20,10,60,15,o_data.data[6][0],o_data.data[6][1],
  1408.             o_data.data[6][2],o_data.data[6][3],o_data.data[6][4],
  1409.             o_data.data[6][5],o_data.data[6][6],o_data.data[6][7],0);
  1410.         switch(i)
  1411.         {
  1412.             case 0 : write_window(3,3,"Enter Int :");
  1413.                  get_int(&int_data,4,16,3);
  1414.                  write_window(3,4,"You entered %d",int_data);
  1415.                  break;
  1416.             case 1 : write_window(3,3,"Enter Long :");
  1417.                  get_long(&long_data,8,17,3);
  1418.                  write_window(3,4,"You entered %ld",long_data);
  1419.                  break;
  1420.             case 2 : write_window(3,3,"Enter String :");
  1421.                  get_string(enter_string,"          --        ","**********  ********",18,3,1,0);
  1422.                  write_window(3,4,"You entered %s",enter_string);
  1423.                  break;
  1424.             case 3 : write_window(3,3,"Enter date :");
  1425.                  get_int_date(date,16,3);
  1426.                  write_window(3,4,"You enterd %d %d %d",date[0],date[1],date[2]);
  1427.                  break;
  1428.             case 4 : write_window(3,3,"Chose Y/N ?");
  1429.                  if(get_choice(15,3,"Y"))
  1430.                  {
  1431.                     write_window(3,4,"You choose YES");
  1432.                  }
  1433.                  else
  1434.                  {
  1435.                     write_window(3,4,"You coose NO");
  1436.                  }
  1437.                  break;
  1438.         }
  1439.         write_window(15,5," HIT ANY KEY ");
  1440.         bioskey(0);
  1441.         clear_window(0);
  1442.     }
  1443.     load_screen(4);
  1444.     call_window(EDIT_WIN);
  1445.     call_menu(EDIT_MENU,10,8);
  1446.     write_window(33,25," HIT ANY KEY ");
  1447.     bioskey(0);
  1448.  
  1449. /*************************************************************************
  1450.  
  1451.     this code is a full screen editor with edit_string()
  1452.  
  1453. **************************************************************************/
  1454.     clear_window(0);
  1455.     for(i = 0;i < 22;i++)
  1456.     {
  1457.         write_window(3,3 + i,"%s",edit_buff + (80 * i));
  1458.     }
  1459.     i = 0;
  1460.     while(done == 0)
  1461.     {
  1462.         write_window(31,25," F1 Help F2 Quit ");
  1463.         if((bioskey(2) & 0x0080) == 128)
  1464.         {
  1465.             write_window(3,2,"Insert");
  1466.         }
  1467.         else
  1468.         {
  1469.             write_window(3,2,"      ");
  1470.         }
  1471.         pick = edit_string(edit_buff + (80 * i),
  1472.             "***************************************************************************",
  1473.             3,3 + i,"TP");
  1474.         switch(pick)
  1475.         {
  1476.             case 0 : i = i + 1; break;
  1477.             case ALT_I : for(j = 20;j > i;j--)
  1478.                      {
  1479.                     memmove(edit_buff + (80 * (j + 1)),edit_buff + (80 * j),80);
  1480.                      }
  1481.                      memset(edit_buff + (80 * (i + 1)),0,80);
  1482.                      clear_window(0);
  1483.                      for(j = 0;j < 22;j++)
  1484.                      {
  1485.                     write_window(3,3 + j,"%s",edit_buff + (80 * j));
  1486.                      }
  1487.                      i = i + 1; 
  1488.                      break;
  1489.             case ESC : clear_window(0);
  1490.                    return(0);
  1491.             case CURSOR_UP : i = i - 1; break;
  1492.             case CURSOR_DN : i = i + 1; break;
  1493.             case F2 : done = data_ok(); 
  1494.                   if(done == 0)
  1495.                   {
  1496.                     read_file(edit_buff,"edit.tem",22 * 80,0L);
  1497.                     clear_window(0);
  1498.                     for(j = 0;j < 22;j++)
  1499.                     {
  1500.                         write_window(3,3 + j,"%s",edit_buff + (80 * j));
  1501.                     }
  1502.                   }
  1503.                   break;
  1504.             case F1 : save_screen_buff();
  1505.                   clear_window(0);
  1506.                   call_menu(EDIT_MENU,10,8);
  1507.                   write_window(31,25,"   HIT ANY KEY   ");
  1508.                   bioskey(0);
  1509.                   load_screen_buff();
  1510.                   break;
  1511.             case ALT_D : for(j = i;j < 22;j++)
  1512.                      {
  1513.                     memmove(edit_buff + (80 * j),edit_buff + (80 * (j + 1)),80);
  1514.                      }
  1515.                      memset(edit_buff + (80 * 21),0,80);
  1516.                      clear_window(0);
  1517.                      for(j = 0;j < 22;j++)
  1518.                      {
  1519.                     write_window(3,3 + j,"%s",edit_buff + (80 * j));
  1520.                      }
  1521.                      break;
  1522.         }
  1523.         if(i > 21)
  1524.         {
  1525.             i = 21;
  1526.         }
  1527.         if(i < 0)
  1528.         {
  1529.             i = 0;
  1530.         }
  1531.     }
  1532.  
  1533. /**************************************************************************/
  1534.  
  1535.     write_file(edit_buff,"edit.tem",(22 * 80),0L);
  1536.     clear_window(0);
  1537.     popup_window(24,50,20,78,22,1,2,15,4,1,8,0,0,0);
  1538.     write_window(3,2,"Display Changes Y/N ?");
  1539.     if(get_choice(25,2,"Y"))
  1540.     {
  1541.         unpopup_window(24);
  1542.         for(i = 0;i < 22;i++)
  1543.         {
  1544.             write_window(3,3 + i,"%s",edit_buff + (80 * i));
  1545.         }
  1546.         write_window(31,25,"   HIT ANY KEY   ");
  1547.         bioskey(0);
  1548.     }
  1549.     hide_cursor();
  1550.     unpopup_window(24);
  1551.     uncall_window(EDIT_WIN);
  1552.     uncall_window(DEMO_TEXT);
  1553.     display_switch = 0;
  1554.     return(0);
  1555. }
  1556.  
  1557. /**************************************************************************
  1558.  
  1559.     this modual is a typical select y/n
  1560.  
  1561. ************************************************************************/
  1562.  
  1563. int data_ok(void)
  1564. {
  1565.     popup_window(24,50,20,69,22,o_data.data[5][0],o_data.data[5][1],o_data.data[5][2],
  1566.         o_data.data[5][3],o_data.data[5][4],o_data.data[5][5],o_data.data[5][6],
  1567.         o_data.data[5][7],0);
  1568.     write_window(3,2,"Data OK Y/N ?");
  1569.     if(get_choice(17,2,"Y"))
  1570.     {
  1571.         unpopup_window(24);
  1572.         return(1);
  1573.     }
  1574.     unpopup_window(24);
  1575.     return(0);
  1576. }
  1577.  
  1578. int scr_form(void)
  1579. {
  1580.     int i,data[10],j,y,total[10];
  1581.     char name[9][15] = {"Don","Ted","Sue","Mary","Bruce","Mike","Sam","Paul","John"};
  1582.  
  1583.     call_window(DEMO_TEXT);
  1584.     for(j = 0;j < 10;j++)
  1585.     {
  1586.         total[j] = 0;
  1587.     }
  1588.     call_menu(SCREEN_MENU,9,6);
  1589.     write_window(25,16," HIT ANY KEY ");
  1590.     bioskey(0);
  1591. /*********************************************************************
  1592.  
  1593.     this code draws a form on screen
  1594.  
  1595. *********************************************************************/
  1596.     call_window(EDIT_WIN);
  1597.     load_screen_form(1,"demo.scr");
  1598.     write_window(33,25," HIT ANY KEY ");
  1599.     bioskey(0);
  1600.     y = 6;
  1601.     for(i = 0;i < 9;i++)
  1602.     {
  1603.         for(j = 0;j < 10;j++)
  1604.         {
  1605.             data[j] = random(100);
  1606.         }
  1607.         write_window(4,y,"%-s",name[i]);
  1608.         write_window(17,y,"%2d   %2d   %2d   %2d   %2d   %2d   %2d   %2d   %2d   %2d",
  1609.             data[0],data[1],data[2],data[3],data[4],data[5],data[6],
  1610.             data[7],data[8],data[9]);
  1611.         for(j = 0;j < 10;j++)
  1612.         {
  1613.             total[j] = total[j] + data[j];
  1614.         }
  1615.         y = y + 2;
  1616.     }
  1617.     write_window(16,24,"%3d  %3d  %3d  %3d  %3d  %3d  %3d  %3d  %3d  %3d",
  1618.         total[0],total[1],total[2],total[3],total[4],total[5],total[6],total[7],
  1619.         total[8],total[9]);
  1620.     bioskey(0);
  1621.  
  1622.     call_window(DEMO_TEXT);
  1623.     call_menu(FORM_MENU,9,6);
  1624.     write_window(25,16," HIT ANY KEY ");
  1625.     bioskey(0);
  1626.  
  1627. /*************************************************************************
  1628.  
  1629.     this code loads a print form and prints it
  1630.  
  1631. **************************************************************************/
  1632.  
  1633.     load_form(0,"simptut.prn");
  1634.     y = 6;
  1635.     for(i = 0;i < 10;i++)
  1636.     {
  1637.         total[i] = 0;
  1638.     }
  1639.     for(i = 0;i < 9;i++)
  1640.     {
  1641.         for(j = 0;j < 10;j++)
  1642.         {
  1643.             data[j] = random(100);
  1644.         }
  1645.         print_printf(4,y,"%s",name[i]);
  1646.         print_printf(17,y,"%2d   %2d   %2d   %2d   %2d   %2d   %2d   %2d   %2d   %2d",
  1647.             data[0],data[1],data[2],data[3],data[4],data[5],data[6],
  1648.             data[7],data[8],data[9]);
  1649.         for(j = 0;j < 10;j++)
  1650.         {
  1651.             total[j] = total[j] + data[j];
  1652.         }
  1653.         y = y + 2;
  1654.     }
  1655.     print_printf(16,24,"%3d  %3d  %3d  %3d  %3d  %3d  %3d  %3d  %3d  %3d",
  1656.          total[0],total[1],total[2],total[3],total[4],total[5],total[6],
  1657.          total[7],total[8],total[9]);
  1658.     popup_window(24,30,10,55,13,o_data.data[5][0],o_data.data[5][1],o_data.data[5][2],
  1659.         o_data.data[5][3],o_data.data[5][4],o_data.data[5][5],
  1660.         o_data.data[5][6],o_data.data[5][7],0);
  1661.  
  1662.     if(print_char(0x0c) != 0)
  1663.     {
  1664.         clear_window(0);
  1665.         write_window(8,2,"Printer error !");
  1666.         bioskey(0);
  1667.         unpopup_window(24);
  1668.         uncall_window(DEMO_TEXT);
  1669.         uncall_window(EDIT_WIN);
  1670.         return(0);
  1671.     }
  1672.     write_window(5,2,"Align Paper Now !");
  1673.     write_window(8,3,"HIT ANY KEY");
  1674.     bioskey(0);
  1675.     clear_window(0);
  1676.     write_window(8,2,"PRINTING!");
  1677.     if(print_buff() != 0)
  1678.     {
  1679.         clear_window(0);
  1680.         write_window(8,2,"Printer error !");
  1681.         bioskey(0);
  1682.     }
  1683.     unpopup_window(24);
  1684.     uncall_window(DEMO_TEXT);
  1685.     uncall_window(EDIT_WIN);
  1686.     display_switch = 0;
  1687.     return(0);
  1688. }
  1689.  
  1690. int song_demo(void)
  1691. {
  1692.     call_window(DEMO_TEXT);
  1693.     call_menu(SONG_MENU,10,6);
  1694.     write_window(25,16," HIT ANY KEY ");
  1695.     bioskey(0);
  1696.     while(playsong(0,"simptut.sng") == 0)
  1697.     {}
  1698.     while(playsong(0,"little.sng") == 0)
  1699.     {}
  1700.     uncall_window(DEMO_TEXT);
  1701.     display_switch = 0;
  1702.     return(0);
  1703. }
  1704.  
  1705. /***********************************************************************
  1706.  
  1707.     this modual shows how to use load_text()
  1708.  
  1709. *************************************************************************/
  1710.  
  1711. void view_text(int file_num)
  1712. {
  1713.     char lable[5][20] = {" GENRAL INFO "," FUTURE "," SUPPORT "," QUARKS ",""};
  1714.  
  1715.     call_window(EDIT_WIN);
  1716.     write_window((80 - strlen(lable[file_num])) / 2,1,lable[file_num]);
  1717.     write_window(33,25," HIT ANY KEY ");
  1718.     switch(file_num)
  1719.     {
  1720.         case 0 : load_text(0,"simptext.men");
  1721.              bioskey(0);
  1722.              clear_window(0);
  1723.              load_text(1,"simptext.men");
  1724.              bioskey(0);
  1725.              break;
  1726.         case 1 : load_text(4,"simptext.men");
  1727.              bioskey(0);
  1728.              break;
  1729.         case 2 : load_text(5,"simptext.men");
  1730.              bioskey(0);
  1731.              break;
  1732.         case 3 : load_text(6,"simptext.men");
  1733.              bioskey(0);
  1734.              break;
  1735.     }
  1736.     uncall_window(EDIT_WIN);
  1737.     display_switch = 0;
  1738. }
  1739.  
  1740. int reg_form(void)
  1741. {
  1742.     char data_string[8][30] = {"","","","","","","",""};
  1743.     int done = 0,i = 0,pick;
  1744.  
  1745.     call_window(EDIT_WIN);
  1746.     load_text(2,"simptext.men");
  1747.     bioskey(0);
  1748.     clear_window(0);
  1749.     load_text(3,"simptext.men");
  1750.     while(done == 0)
  1751.     {
  1752.         show_cursor();
  1753.         switch(i)
  1754.         {
  1755.             case 0 : pick = edit_string(data_string[0],
  1756.                     "****************************",13,4,"TAP");
  1757.                  break;
  1758.             case 1 : pick = edit_string(data_string[1],
  1759.                     "****************************",13,5,"TAP");
  1760.                  break;
  1761.             case 2 : pick = edit_string(data_string[2],
  1762.                     "****************************",13,6,"TAP");
  1763.                  break;
  1764.             case 3 : pick = edit_string(data_string[3],
  1765.                     "****************************",13,7,"TAP");
  1766.                  break;
  1767.             case 4 : pick = edit_string(data_string[4],
  1768.                     "############",13,8,"TAP");
  1769.                  break;
  1770.             case 5 : pick = edit_string(data_string[5],
  1771.                     "********************",20,10,"TAP");
  1772.                  break;
  1773.             case 6 : pick = edit_string(data_string[6],
  1774.                     "9999",12,15,"TAP");
  1775.                  break;
  1776.             case 7 : pick = edit_string(data_string[7],
  1777.                     "FFFFFFF",50,15,"TAP");
  1778.                  break;
  1779.         }
  1780.         switch(pick)
  1781.         {
  1782.             case ESC : done = 1; break;
  1783.             case CURSOR_UP : i = i - 1; break;
  1784.             case CURSOR_DN : i = i + 1; break;
  1785.             case 0 : i = i + 1; break;
  1786.         }
  1787.         if(i == 8)
  1788.         {
  1789.             if((done = data_ok()) == 0)
  1790.             {
  1791.                 i = 0;
  1792.             }
  1793.  
  1794. /**************************************************************************             
  1795.  
  1796.     this code builds and prints a form
  1797.  
  1798. ***************************************************************************/
  1799.  
  1800.             else
  1801.             {
  1802.                 clear_print_buff();
  1803.                 print_window(1,1,80,20,2,0);
  1804.                 print_printf(3,3,"Name:    %s",data_string[0]);
  1805.                 print_printf(3,5,"Address: %s",data_string[1]);
  1806.                 print_printf(12,6,"%s",data_string[2]);
  1807.                 print_printf(12,7,"%s",data_string[3]);
  1808.                 print_printf(3,9,"Phone: %s",data_string[4]);
  1809.                 print_printf(3,11,"Type of machine: %s",data_string[5]);
  1810.                 print_printf(3,13,"Type of disk: 3 1/2 hi");
  1811.                 print_printf(3,14,"(circule one) 5 1/4 hi");
  1812.                 print_printf(3,16,"Qunity: %s",data_string[6]);
  1813.                 print_printf(40,16,"Amount inclosed $%s",data_string[7]);
  1814.                 print_printf(40,18,"Sign ___________________________");
  1815.                 popup_window(24,25,10,55,12,o_data.data[5][0],
  1816.                     o_data.data[5][1],o_data.data[5][2],
  1817.                     o_data.data[5][3],o_data.data[5][4],
  1818.                     o_data.data[5][5],o_data.data[5][6],
  1819.                     o_data.data[5][7],0);
  1820.                 write_window(3,2,"Print Form Y/N ?");
  1821.                 if(get_choice(21,2,"Y"))
  1822.                 {
  1823.                     clear_window(0);
  1824.                     write_window(3,2,"Align Paper and hit key");
  1825.                     bioskey(0);
  1826.                     clear_window(0);
  1827.                     write_window(10,2,"PRINTING!");
  1828.                     print_buff();
  1829.                 }
  1830.                 unpopup_window(24);
  1831.             }
  1832.         }
  1833.     }
  1834.     hide_cursor();
  1835.     uncall_window(EDIT_WIN);
  1836.     display_switch = 0;
  1837.     return(0);
  1838. }
  1839.  
  1840. void view_tut(int file_num,char *lable)
  1841. {
  1842.     call_window(EDIT_WIN);
  1843.     textcolor(14);
  1844.     write_window((80 - strlen(lable)) / 2,1," %s ",lable);
  1845.     write_window(33,25," HIT ANY KEY ");
  1846.     load_text(file_num,"stuttext.men");
  1847.     bioskey(0);
  1848.     uncall_window(EDIT_WIN);
  1849. }
  1850.  
  1851. /***************************************************************************
  1852.  
  1853.     this modual reads a text file and displays it on the screen
  1854.  
  1855. **************************************************************************/
  1856.  
  1857. void reed_text(char *file_name)
  1858. {
  1859.     call_window(EDIT_WIN);
  1860.     write_window(35,1," %s ",file_name);
  1861.     write_window(32,25," PGUP/PGDN ESC ");
  1862.     read_text(file_name,0);
  1863.     uncall_window(EDIT_WIN);
  1864.     display_switch = 0;
  1865. }
  1866.  
  1867. /*************************************************************************
  1868.  
  1869.     this modual is the parameter selects for the option fungtion
  1870.  
  1871. **************************************************************************/
  1872.  
  1873. int option_menu(void)
  1874. {
  1875.     int done = 0,i = 0,j ,k,oldi = 7,oldx = -1,oldy = -1,choice,pick,mousex = 0,mousey = 0;
  1876.     char lable[9][15] = {" DESK TOP "," FULL TEXT "," MENU "," PULL DOWN "," TEXT ",
  1877.                 " EXIT "," ENTERY "," Highlite"," Hot key"};
  1878.  
  1879.     hide_cursor();
  1880.     popup_window(25,1,1,80,25,1,0,0,7,1,0,0,0,0);
  1881.     write_window(35,1," OPTIONS ");
  1882.     for(i = 11;i < 19;i++)
  1883.     {
  1884.         call_window(i);
  1885.         if(i == 18)
  1886.         {
  1887.             write_window(2,1,"%s",lable[7]);
  1888.         }
  1889.         else
  1890.         {
  1891.             write_window(3,1,"%s",lable[i - 11]);
  1892.         }
  1893.         if(i == 14)
  1894.         {
  1895.             write_window(3,3,"%s",lable[8]);
  1896.             textcolor(o_data.hk_color);
  1897.             write_window(4,3,"H");
  1898.         }
  1899.     }
  1900.     simp_window(44,5,52,13,0,0,0,0,0,0,0,0,0);
  1901.     window(1,1,80,25);
  1902.     k = 0;
  1903.     for(i = 0;i < 9;i++)
  1904.     {
  1905.         for(j = 0;j < 9;j++)
  1906.         {
  1907.             switch(i)
  1908.             {
  1909.                 case 1 :
  1910.                 case 3 :
  1911.                 case 5 :
  1912.                 case 7 : textbackground(0);
  1913.                      textcolor(k);
  1914.                      gotoxy(j + 44,i + 5);
  1915.                      switch(j)
  1916.                      {
  1917.                         case 1 :
  1918.                         case 3 :
  1919.                         case 5 :
  1920.                         case 7 : putch(219);
  1921.                              k = k + 1;
  1922.                              break;
  1923.                      }
  1924.             }
  1925.         }
  1926.     }
  1927.     textattr(0 + (7<<4));
  1928.     write_window(44,3,"Change window:");
  1929.     call_menu(OPT_MENU_1,59,6);
  1930.     call_menu(OPT_MENU_2,42,18);
  1931.     write_window(5,22,"Load colors");
  1932.     write_window(5,23,"eXit");
  1933.     textcolor(o_data.hk_color);
  1934.     write_window(5,22,"L");
  1935.     write_window(6,23,"X");
  1936.     write_window(59,3,"%s",lable[win_num]);
  1937.     save_screen_buff();
  1938.     i = 0;
  1939.     while(done == 0)
  1940.     {
  1941.         choice = 0;
  1942.         mouposition(&mousex,&mousey);
  1943.         if(((mousex != oldx) | (mousey != oldy)) & (mou_switch == 1))
  1944.         {
  1945.             mou_on();
  1946.             oldx = mousex;
  1947.             oldy = mousey;
  1948.             if((mousex > 43) & (mousex < 60) & (mousey == 3))
  1949.             {
  1950.                 i = 0;
  1951.             }
  1952.             else if((mousex > 58) & (mousex < 68) & (mousey == 6))
  1953.             {
  1954.                 i = 1;
  1955.             }
  1956.             else if((mousex > 58) & (mousex < 68) & (mousey == 11))
  1957.             {
  1958.                 i = 2;
  1959.             }
  1960.             else if((mousex > 48) & (mousex < 57) & (mousey == 18))
  1961.             {
  1962.                 i = 3;
  1963.             }
  1964.             else if((mousex > 4) & (mousex < 18))
  1965.             {
  1966.                 switch(mousey)
  1967.                 {
  1968.                     case 22 : i = 4; break;
  1969.                     case 23 : i = 5; break;
  1970.                 }
  1971.             }
  1972.  
  1973.         }
  1974.         if(bioskey(1))
  1975.         {
  1976.             switch(bioskey(0))
  1977.             {
  1978.                 case ESC : choice = 7; break;
  1979.                 case ENTER : choice = 1; break;
  1980.                 case ALT_L : choice = 6; break;
  1981.                 case ALT_X : choice = 7; break;
  1982.                 case CURSOR_UP : i = i - 1; break;
  1983.                 case CURSOR_DN : i = i + 1; break;
  1984.             }
  1985.         }
  1986.         if(i < 0)
  1987.         {
  1988.             i = 0;
  1989.         }
  1990.         else if(i > 5)
  1991.         {
  1992.             i = 5;
  1993.         }
  1994.         if(oldi != i)
  1995.         {
  1996.             mou_off();
  1997.             load_screen_buff();
  1998.             oldi = i;
  1999.             switch(i)
  2000.             {
  2001.                 case 0 : simp_window(43,3,58,3,0,0,14,1,1,8,0,0,0);
  2002.                      write_window(2,1,"Change window:");
  2003.                      break;
  2004.                 case 1 : simp_window(58,6,67,6,0,0,14,1,1,8,0,0,0);
  2005.                      write_window(2,1,"Boarder:");
  2006.                      break;
  2007.                 case 2 : simp_window(58,11,66,11,0,0,14,1,1,8,0,0,0);
  2008.                      write_window(2,1,"Shadow:");
  2009.                      break;
  2010.                 case 3 : simp_window(48,18,55,18,0,0,14,1,1,8,0,0,0);
  2011.                      write_window(2,1,"Colors");
  2012.                      break;
  2013.                 case 4 : simp_window(4,22,16,22,0,0,14,1,1,8,0,0,0);
  2014.                      write_window(2,1,"Load colors");
  2015.                      break;
  2016.                 case 5 : simp_window(4,23,9,23,0,0,14,1,1,8,0,0,0);
  2017.                      write_window(2,1,"eXit");
  2018.                      break;
  2019.             }
  2020.             mou_on();
  2021.         }
  2022.         if(moubuttonpressed(0))
  2023.         {
  2024.             if(((mousex > 43) & (mousex < 60) & (mousey == 3)) |
  2025.                 ((mousex > 58) & (mousex < 68) & ((mousey == 6) | (mousey == 11))) |
  2026.                 ((mousex > 48) & (mousex < 57) & (mousey == 18)) |
  2027.                 ((mousex > 4) & (mousex < 18) & ((mousey == 23) | (mousey == 22))))
  2028.             {
  2029.                 choice = 1;
  2030.             }
  2031.         }
  2032.         if(choice != 0)
  2033.         {
  2034.             break;
  2035.         }
  2036.     }
  2037.     mou_off();
  2038.     load_screen_buff();
  2039.     pick = 1;
  2040.     if(choice == 1)
  2041.     {
  2042.         choice = i + 2;
  2043.     }
  2044.     switch(choice)
  2045.     {
  2046.         case 2 : win_num = change_window(lable); break;
  2047.         case 3 : while(boarder_select()){} break;
  2048.         case 4 : while(shadow_select()){} break;
  2049.         case 5 : while(get_color()){} break;
  2050.         case 6 : pick = save_option(0); break;
  2051.         case 7 : pick = 0; break;
  2052.     }
  2053.     display_switch = 0;
  2054.     unpopup_window(25);
  2055.     return(pick);
  2056. }
  2057.  
  2058. int save_option(int save_switch)
  2059. {
  2060.     char file_name[257] = "*.opt";
  2061.     char file_buff[15][13] = {"","","","","","","","","","","","","","",""};
  2062.     int i,oldx = -1,oldy = -1,oldi = 18,choice,count,mousex = 0,mousey = 0;
  2063.  
  2064.     if(save_switch)
  2065.     {
  2066.         load_screen(3);
  2067.     }
  2068.  
  2069. /*****************************************************************************
  2070.  
  2071.     this code reads a enter directory and displays it for selection
  2072.  
  2073. ****************************************************************************/
  2074.  
  2075.     show_cursor();
  2076.     popup_window(22,45,3,75,5,1,2,0,7,1,8,0,0,0);
  2077.     if(get_string(file_name,"                  ","******************",3,2,1,1) == 27)
  2078.     {
  2079.         unpopup_window(22);
  2080.         hide_cursor();
  2081.         return(0);
  2082.     }
  2083.     hide_cursor();
  2084.     if(strcmp(file_name,"*.opt") == 0)
  2085.     {
  2086.         popup_window(23,45,7,65,23,1,2,0,7,1,8,0,0,0);
  2087.         read_directory(file_buff[0],15,file_name);
  2088.         count = 0;
  2089.         for(i = 0;i < 15;i++)
  2090.         {
  2091.             if(strcmp(file_buff[0],"") == 0)
  2092.             {
  2093.                 unpopup_window(23);
  2094.                 return(0);
  2095.             }
  2096.             if(strcmp(file_buff[i],"") != 0)
  2097.             {
  2098.                 write_window(3,2 + i,"%s",file_buff[i]);
  2099.                 count = count + 1;
  2100.             }
  2101.         }
  2102.         count = count - 1;
  2103.  
  2104. /****************************************************************************        
  2105.  
  2106.     this code selects a file name
  2107.  
  2108. ****************************************************************************/
  2109.  
  2110.         save_screen_buff();
  2111.         i = 0;
  2112.         for(;;)
  2113.         {
  2114.             choice = 0;
  2115.             mouposition(&mousex,&mousey);
  2116.             if(((mousex != oldx) & (mousey != oldy)) & (mou_switch = 1))
  2117.             {
  2118.                 mou_on();
  2119.                 oldx = mousex;
  2120.                 oldy = mousey;
  2121.                 if((mousex > 46) & (mousex < 65))
  2122.                 {
  2123.                     i = mousey - 8;
  2124.                 }
  2125.             }
  2126.             if(bioskey(1))
  2127.             {
  2128.                 switch(bioskey(0))
  2129.                 {
  2130.                     case ESC : choice = 18; break;
  2131.                     case ENTER : choice = 1; break;
  2132.                     case CURSOR_UP : i = i - 1; break;
  2133.                     case CURSOR_DN : i = i + 1; break;
  2134.                 }
  2135.             }
  2136.             if(i < 0)
  2137.             {
  2138.                 i = 0;
  2139.             }
  2140.             if(i > count)
  2141.             {
  2142.                 i = count;
  2143.             }
  2144.             if(oldi != i)
  2145.             {
  2146.                 oldi = i;
  2147.                 mou_off();
  2148.                 load_screen_buff();
  2149.                 simp_window(46,8 + i,64,i + 8,0,2,14,1,1,8,0,0,0);
  2150.                 write_window(2,1,"%s",file_buff[i]);
  2151.                 mou_on();
  2152.             }
  2153.             if(moubuttonpressed(0))
  2154.             {
  2155.                 if((mousex > 46) & (mousex < 65) & (mousey > 7) & (mousey < 23))
  2156.                 {
  2157.                     choice = 1;
  2158.                 }
  2159.                 else
  2160.                 {
  2161.                     choice = 18;
  2162.                 }
  2163.             }
  2164.             if(choice != 0)
  2165.             {
  2166.                 break;
  2167.             }
  2168.         }
  2169.         mou_off();
  2170.         load_screen_buff();
  2171.         unpopup_window(23);
  2172.         if(choice == 1)
  2173.         {
  2174.             strcpy(file_name,file_buff[i]);
  2175.         }
  2176.     }
  2177.  
  2178. /****************************************************************************/
  2179.  
  2180.     unpopup_window(22);
  2181.     if(strcmp(file_name,"") == 0)
  2182.     {
  2183.         return(0);
  2184.     }
  2185.     else
  2186.     {
  2187.         strtok(file_name,".");
  2188.         strcat(file_name,".opt");
  2189.     }
  2190.     if(save_switch == 0)
  2191.     {
  2192.         read_file(&o_data,file_name,sizeof(O_DATA),0L);
  2193.         save_data();
  2194.     }
  2195.     else
  2196.     {
  2197.         creat_file(file_name);
  2198.         creat_file("simptut.sys");
  2199.         write_file(&o_data,file_name,sizeof(O_DATA),0L);
  2200.         write_file(&o_data,"simptut.sys",sizeof(O_DATA),0L);
  2201.     }
  2202.     display_switch = 0;
  2203.     return(0);
  2204. }
  2205.  
  2206. int o_menu(void)
  2207. {
  2208.     int pick,choice,i = 0,old_x = -1,old_y = -1,old_i = 8,mousex = 0,mousey = 0;
  2209.     char lable[4][15] = {"Graphics","Fonts","Printer Port","Save options"};
  2210.  
  2211.     if(display_switch)
  2212.     {
  2213.         load_screen(2);
  2214.         call_window(OPT_WIN);
  2215.         call_menu(OPT_MENU,3,2);
  2216.         save_screen(3);
  2217.     }
  2218.     else
  2219.     {
  2220.         load_screen(3);
  2221.     }
  2222.     hide_cursor();
  2223.     display_switch = 1;
  2224.     textcolor(o_data.hk_color);
  2225.     write_window(3,2,"G");
  2226.     write_window(3,3,"F");
  2227.     write_window(3,4,"P");
  2228.     write_window(3,5,"S");
  2229.     save_screen_buff();
  2230.     for(;;)
  2231.     {
  2232.         choice = 0;
  2233.         mouposition(&mousex,&mousey);
  2234.         if(((mousex != old_x) | (mousey != old_y)) & (mou_switch == 1))
  2235.         {
  2236.             mou_on();
  2237.             old_x = mousex;
  2238.             old_y = mousey;
  2239.             if((mousex > 33) & (mousex < 48))
  2240.             {
  2241.                 i = mousey - 5;
  2242.             }
  2243.         }
  2244.         if(bioskey(1))
  2245.         {
  2246.             switch(bioskey(0))
  2247.             {
  2248.                 case ALT_G : choice = 2; break;
  2249.                 case ALT_F : choice = 3; break;
  2250.                 case ALT_P : choice = 4; break;
  2251.                 case ALT_S : choice = 5;
  2252.                 case ENTER : choice = 1; break;
  2253.                 case ESC : choice = 6; break;
  2254.                 case CURSOR_UP : i = i - 1; break;
  2255.                 case CURSOR_DN : i = i + 1; break;
  2256.             }
  2257.         }
  2258.         if(i < 0)
  2259.         {
  2260.             i = 0;
  2261.         }
  2262.         if(i > 3)
  2263.         {
  2264.             i = 3;
  2265.         }
  2266.         if(old_i != i)
  2267.         {
  2268.             mou_off();
  2269.             load_screen_buff();
  2270.             old_i = i;
  2271.             simp_window(33,5 + i,46,5 + i,o_data.data[7][0],o_data.data[7][1],
  2272.                 o_data.data[7][2],o_data.data[7][3],o_data.data[7][4],
  2273.                 o_data.data[7][5],o_data.data[7][6],o_data.data[7][7],0);
  2274.             write_window(2,1,"%s",lable[i]);
  2275.             mou_on();
  2276.         }
  2277.         if(moubuttonpressed(0))
  2278.         {
  2279.             if((mousex > 33) & (mousex < 48) & (mousey > 4) & (mousey < 9))
  2280.             {
  2281.                 choice = 1;
  2282.             }
  2283.             else
  2284.             {
  2285.                 choice = 6;
  2286.             }
  2287.         }
  2288.         if(choice != 0)
  2289.         {
  2290.             break;
  2291.         }
  2292.     }
  2293.  
  2294.  
  2295.     mou_off();
  2296.     load_screen_buff();
  2297.     pick = 1;
  2298.     if(choice == 1)
  2299.     {
  2300.         choice = i + 2;
  2301.     }
  2302.     switch(choice)
  2303.     {
  2304.         case 2 : while(option_menu()){} break;
  2305.         case 3 : font_demo(); 
  2306.              pick = 2;
  2307.              break;
  2308.         case 4 : get_port(); 
  2309.              pick = 3;
  2310.              break;
  2311.         case 5 : save_option(1); 
  2312.              pick = 3;
  2313.              break;
  2314.         case 6 : pick = 0; break;
  2315.     }
  2316.     if((choice == 3) | (choice == 2))
  2317.     {
  2318.         if((pick == 2) | (pick == 1))
  2319.         {
  2320.             strcpy(font_string,"lfsw14 ");
  2321.             strcat(font_string,o_data.font);
  2322.             system(font_string);
  2323.         }
  2324.         if(pick == 1)
  2325.         {
  2326.             simp_window(1,1,80,25,o_data.data[0][0],o_data.data[0][1],o_data.data[0][2],
  2327.                 o_data.data[0][3],o_data.data[0][4],o_data.data[0][5],
  2328.                 o_data.data[0][6],o_data.data[0][7],0);
  2329.             load_screen_form(0,"simptut.scr");
  2330.             save_screen(1);
  2331.             call_window(MAIN_WIN);
  2332.             call_menu(MAIN_MENU,3,2);
  2333.             save_screen(2);
  2334.             display_switch = 1;
  2335.         }
  2336.     }
  2337.     else
  2338.     {
  2339.         display_switch = 0;
  2340.     }
  2341.     return(pick);
  2342. }
  2343.  
  2344. void get_port(void)
  2345. {
  2346.     load_screen(3);
  2347.     call_window(ENTER_WIN);
  2348.     write_window(3,2,"Enter LP port number:");
  2349.     show_cursor();
  2350.     get_int(&port_number,1,25,2);
  2351.     hide_cursor();
  2352.     uncall_window(ENTER_WIN);
  2353.     if((port_number > 4) | (port_number < 1))
  2354.     {
  2355.         port_number = 0;
  2356.     }
  2357.     o_data.port = port_number;
  2358. }
  2359.  
  2360. int change_window(char lable[9][15])
  2361. {
  2362.     int i,choice,oldx = -1,oldy = -1,oldi = 12,mousex = 0,mousey = 0;
  2363.  
  2364.  
  2365.     call_window(20);
  2366.     for(i = 0;i < 9;i++)
  2367.     {
  2368.         write_window(3,2 + i,"%s",lable[i]);
  2369.     }
  2370.     i = 0;
  2371.     save_screen_buff();
  2372.     for(;;)
  2373.     {
  2374.         choice = 0;
  2375.         mouposition(&mousex,&mousey);
  2376.         if(((mousex != oldx) | (mousey != oldy)) & (mou_switch == 1))
  2377.         {
  2378.             mou_on();
  2379.             oldx = mousex;
  2380.             oldy = mousey;
  2381.             if((mousex > 40) & (mousex < 55))
  2382.             {
  2383.                 i = mousey - 6;
  2384.             }
  2385.         }
  2386.         if(bioskey(1))
  2387.         {
  2388.             switch(bioskey(0))
  2389.             {
  2390.                 case ESC : choice = 9; break;
  2391.                 case ENTER : choice = 1; break;
  2392.                 case CURSOR_UP : i = i - 1; break;
  2393.                 case CURSOR_DN : i = i + 1; break;
  2394.             }
  2395.         }
  2396.         if(i < 0)
  2397.         {
  2398.             i = 0;
  2399.         }
  2400.         if(i > 8)
  2401.         {
  2402.             i = 8;
  2403.         }
  2404.         if(oldi != i)
  2405.         {
  2406.             oldi = i;
  2407.             mou_off();
  2408.             load_screen_buff();
  2409.             simp_window(41,6 + i,54,6 + i,0,2,14,1,1,8,0,0,0);
  2410.             write_window(2,1,"%s",lable[i]);
  2411.             mou_on();
  2412.         }
  2413.         if(moubuttonpressed(0))
  2414.         {
  2415.             if((mousex > 40) & (mousex < 55) & (mousey > 5) & (mousey < 15))
  2416.             {
  2417.                 choice = 1;
  2418.             }
  2419.         }
  2420.         if(choice != 0)
  2421.         {
  2422.             break;
  2423.         }
  2424.     }
  2425.     mou_off();
  2426.     load_screen_buff();
  2427.     uncall_window(20);
  2428.     if(choice == 1)
  2429.     {
  2430.         choice = i;
  2431.     }
  2432.     if(choice == 9)
  2433.     {
  2434.         choice = 0;
  2435.     }
  2436.     return(choice);
  2437. }
  2438.  
  2439. int boarder_select(void)
  2440. {
  2441.     int i = 0,choice,oldx = -1,oldy = -1,oldi = 4,mousex = 0,mousey = 0;
  2442.     char lable[4][20] = {"No boarser","Single boarder","Double boarder","Any boarder"};
  2443.  
  2444.     for(;;)
  2445.     {
  2446.         choice = 0;
  2447.         mouposition(&mousex,&mousey);
  2448.         if(((mousex != oldx) | (mousey != oldy)) & (mou_switch == 1))
  2449.         {
  2450.             mou_on();
  2451.             oldx = mousex;
  2452.             oldy = mousey;
  2453.             if((mousex > 61) & (mousex < 79))
  2454.             {
  2455.                 i = mousey - 7;
  2456.             }
  2457.         }
  2458.         if(bioskey(1))
  2459.         {
  2460.             switch(bioskey(0))
  2461.             {
  2462.                 case ESC : choice = 6; break;
  2463.                 case ENTER : choice = 1; break;
  2464.                 case CURSOR_UP : i = i - 1; break;
  2465.                 case CURSOR_DN : i = i + 1; break;
  2466.             }
  2467.         }
  2468.         if(i < 0)
  2469.         {
  2470.             i = 0;
  2471.         }
  2472.         if(i > 3)
  2473.         {
  2474.             i = 3;
  2475.         }
  2476.         if(oldi != i)
  2477.         {
  2478.             mou_off();
  2479.             load_screen_buff();
  2480.             oldi = i;
  2481.             simp_window(61,7 + i,77,7 + i,0,2,14,1,1,8,0,0,0);
  2482.             write_window(2,1,"%s",lable[i]);
  2483.             mou_on();
  2484.         }
  2485.         if(moubuttonpressed(0))
  2486.         {
  2487.             if((mousex > 61) & (mousex < 79) & (mousey > 6) & (mousey < 11))
  2488.             {
  2489.                 choice = 1;
  2490.             }
  2491.             else
  2492.             {
  2493.                 choice = 6;
  2494.             }
  2495.         }
  2496.         if(choice != 0)
  2497.         {
  2498.             break;
  2499.         }
  2500.     }
  2501.     mou_off();
  2502.     load_screen_buff();
  2503.     if(choice == 1)
  2504.     {
  2505.         choice = i + 2;
  2506.     }
  2507.     switch(choice)
  2508.     {
  2509.         case 2 : o_data.data[win_num][0] = 0; break;
  2510.         case 3 : o_data.data[win_num][0] = 1; break;
  2511.         case 4 : o_data.data[win_num][0] = 2; break;
  2512.         case 5 : o_data.data[win_num][0] = 5;
  2513.              popup_window(26,30,10,57,12,1,2,0,7,1,8,0,0,0);
  2514.              write_window(3,2,"Enter ASCII code:");
  2515.              show_cursor();
  2516.              if(get_int(&o_data.data[win_num][7],3,22,2) == 1)
  2517.              {
  2518.                 o_data.data[win_num][7] = 0;
  2519.              }
  2520.              hide_cursor();
  2521.              unpopup_window(26);
  2522.              break;
  2523.         case 6 : return(0);
  2524.  
  2525.     }
  2526.     save_data();
  2527.     return(0);
  2528. }
  2529.  
  2530. /****************************************************************************
  2531.  
  2532.     this modual save the program system file
  2533.  
  2534. *******************************************************************************/
  2535.  
  2536. void save_data(void)
  2537. {
  2538.     int i,temp;
  2539.  
  2540.     temp = win_num;
  2541.     for(i = 0;i < 8;i++)
  2542.     {
  2543.         win_num = i;
  2544.         switch(win_num)
  2545.         {
  2546.             case 0 : write_data(11); break;
  2547.             case 1 : write_data(7);
  2548.                  write_data(10);
  2549.                  write_data(12);
  2550.                  break;
  2551.             case 2 : write_data(1);
  2552.                  write_data(13);
  2553.                  break;
  2554.             case 3 : write_data(2);
  2555.                  write_data(3);
  2556.                  write_data(4);
  2557.                  write_data(5);
  2558.                  write_data(19);
  2559.                  write_data(14);
  2560.                  write_data(21);
  2561.                  break;
  2562.             case 4 : write_data(8);
  2563.                  write_data(15);
  2564.                  break;
  2565.             case 5 : write_data(6);
  2566.                  write_data(16);
  2567.                  break;
  2568.             case 6 : write_data(9);
  2569.                  write_data(17);
  2570.                  break;
  2571.             case 7 : write_data(18); break;
  2572.         }
  2573.     }
  2574.     win_num = temp;
  2575. }
  2576.  
  2577. int shadow_select(void)
  2578. {
  2579.     int choice,oldx = -1,oldy = -1,oldi = 10,i = 0,mousex = 0,mousey = 0;
  2580.     char lable[8][20] = {"No shadow","Wide shadow","Narrow shadow","",
  2581.                 "Upper left","Lower left","Upper right","Lower right"};
  2582.  
  2583.     for(;;)
  2584.     {
  2585.         choice = 0;
  2586.         mouposition(&mousex,&mousey);
  2587.         if(((mousex != oldx) | (mousey != oldy)) & (mou_switch == 1))
  2588.         {
  2589.             mou_on();
  2590.             oldx = mousex;
  2591.             oldy = mousey;
  2592.             if((mousex > 61) & (mousex < 76))
  2593.             {
  2594.                 i = mousey - 12;
  2595.             }
  2596.         }
  2597.         if(bioskey(1))
  2598.         {
  2599.             switch(bioskey(0))
  2600.             {
  2601.                 case ESC : choice = 10; break;
  2602.                 case ENTER : choice = 1; break;
  2603.                 case CURSOR_UP : i = i - 1; break;
  2604.                 case CURSOR_DN : i = i + 1; break;
  2605.             }
  2606.         }
  2607.         if(i < 0)
  2608.         {
  2609.             i = 0;
  2610.         }
  2611.         if((i == 3) & (oldi < 3))
  2612.         {
  2613.             i = 4;
  2614.         }
  2615.         if((i == 3) & (oldi > 3))
  2616.         {
  2617.             i = 2;
  2618.         }
  2619.         if(i > 7)
  2620.         {
  2621.             i = 7;
  2622.         }
  2623.         if(oldi != i)
  2624.         {
  2625.             mou_off();
  2626.             load_screen_buff();
  2627.             oldi = i;
  2628.             switch(i)
  2629.             {
  2630.                 case 0 :
  2631.                 case 1 :
  2632.                 case 2 : simp_window(61,12 + i,77,12 + i,0,2,14,1,1,8,0,0,0);
  2633.                      write_window(2,1,"%s",lable[i]);
  2634.                      break;
  2635.                 case 4 :
  2636.                 case 5 :
  2637.                 case 6 :
  2638.                 case 7 : simp_window(64,12 + i,77,12 + i,0,2,14,1,1,8,0,0,0);
  2639.                      write_window(2,1,"%s",lable[i]);
  2640.                      break;
  2641.             }
  2642.             mou_on();
  2643.         }
  2644.         if(moubuttonpressed(0))
  2645.         {
  2646.             switch(i)
  2647.             {
  2648.                 case 0 :
  2649.                 case 1 :
  2650.                 case 2 : if((mousex > 61) & (mousex < 79))
  2651.                      {
  2652.                         choice = 1;
  2653.                      }
  2654.                 case 4 :
  2655.                 case 5 :
  2656.                 case 6 :
  2657.                 case 7 : if((mousex > 64) & (mousex < 79))
  2658.                      {
  2659.                         choice = 1;
  2660.                      }
  2661.             }
  2662.         }
  2663.         if(choice != 0)
  2664.         {
  2665.             break;
  2666.         }
  2667.     }
  2668.     mou_off();
  2669.     load_screen_buff();
  2670.     if(choice == 1)
  2671.     {
  2672.         choice = i + 2;
  2673.     }
  2674.     switch(choice)
  2675.     {
  2676.         case 2 : o_data.data[win_num][1] = 0; break;
  2677.         case 3 : o_data.data[win_num][1] = 1; break;
  2678.         case 4 : o_data.data[win_num][1] = 2; break;
  2679.         case 6 : o_data.data[win_num][4] = 2; break;
  2680.         case 7 : o_data.data[win_num][4] = 1; break;
  2681.         case 8 : o_data.data[win_num][4] = 4; break;
  2682.         case 9 : o_data.data[win_num][4] = 3; break;
  2683.         case 10 : return(0);
  2684.     }
  2685.     save_data();
  2686.     return(0);
  2687. }
  2688.  
  2689. int color_select(void)
  2690. {
  2691.     int choice,i = 0,oldx = -1,oldy = -1,oldi = 18,mousex = 0,mousey = 0;
  2692.  
  2693.     for(;;)
  2694.     {
  2695.         choice = 0;
  2696.         mouposition(&mousex,&mousey);
  2697.         if(((oldx != mousex) | (oldy != mousey)) & (mou_switch == 1))
  2698.         {
  2699.             mou_on();
  2700.             oldx = mousex;
  2701.             oldy = mousey;
  2702.             switch(mousex)
  2703.             {
  2704.                 case 45 : switch(mousey)
  2705.                       {
  2706.                         case 6 : i = 0; break;
  2707.                         case 8 : i = 4; break;
  2708.                         case 10 : i = 8; break;
  2709.                         case 12 : i = 12; break;
  2710.                       }
  2711.                       break;
  2712.                 case 47 : switch(mousey)
  2713.                       {
  2714.                         case 6 : i = 1; break;
  2715.                         case 8 : i = 5; break;
  2716.                         case 10 : i = 9; break;
  2717.                         case 12 : i = 13; break;
  2718.                       }
  2719.                       break;
  2720.                 case 49 : switch(mousey)
  2721.                       {
  2722.                         case 6 : i = 2; break;
  2723.                         case 8 : i = 6; break;
  2724.                         case 10 : i = 10; break;
  2725.                         case 12 : i = 14; break;
  2726.                       }
  2727.                       break;
  2728.                 case 51 : switch(mousey)
  2729.                       {
  2730.                         case 6 : i = 3; break;
  2731.                         case 8 : i = 7; break;
  2732.                         case 10 : i = 11; break;
  2733.                         case 12 : i = 15; break;
  2734.                       }
  2735.             }
  2736.         }
  2737.         if(bioskey(1))
  2738.         {
  2739.             switch(bioskey(0))
  2740.             {
  2741.                 case ESC : choice = 18; break;
  2742.                 case ENTER : choice = 1; break;
  2743.                 case CURSOR_UP : i = i - 4; break;
  2744.                 case CURSOR_DN : i = i + 4; break;
  2745.                 case CURSOR_LEFT : i = i - 1; break;
  2746.                 case CURSOR_RIGHT : i = i + 1; break;
  2747.             }
  2748.         }
  2749.         if(i < 0)
  2750.         {
  2751.             i = 0;
  2752.         }
  2753.         if(i > 15)
  2754.         {
  2755.             i = 15;
  2756.         }
  2757.         if(oldi != i)
  2758.         {
  2759.             mou_off();
  2760.             load_screen_buff();
  2761.             oldi = i;
  2762.             switch(i)
  2763.             {
  2764.                 case 0 : simp_window(44,5,46,7,0,0,0,15,0,0,0,0,0); break;
  2765.                 case 1 : simp_window(46,5,48,7,0,0,1,8,0,0,0,0,0); break;
  2766.                 case 2 : simp_window(48,5,50,7,0,0,2,8,0,0,0,0,0); break;
  2767.                 case 3 : simp_window(50,5,52,7,0,0,3,8,0,0,0,0,0); break;
  2768.                 case 4 : simp_window(44,7,46,9,0,0,4,8,0,0,0,0,0); break;
  2769.                 case 5 : simp_window(46,7,48,9,0,0,5,8,0,0,0,0,0); break;
  2770.                 case 6 : simp_window(48,7,50,9,0,0,6,8,0,0,0,0,0); break;
  2771.                 case 7 : simp_window(50,7,52,9,0,0,7,8,0,0,0,0,0); break;
  2772.                 case 8 : simp_window(44,9,46,11,0,0,8,8,0,0,0,0,0); break;
  2773.                 case 9 : simp_window(46,9,48,11,0,0,9,8,0,0,0,0,0); break;
  2774.                 case 10 : simp_window(48,9,50,11,0,0,10,8,0,0,0,0,0); break;
  2775.                 case 11 : simp_window(50,9,52,11,0,0,11,8,0,0,0,0,0); break;
  2776.                 case 12 : simp_window(44,11,46,13,0,0,12,8,0,0,0,0,0); break;
  2777.                 case 13 : simp_window(46,11,48,13,0,0,13,8,0,0,0,0,0); break;
  2778.                 case 14 : simp_window(48,11,50,13,0,0,14,8,0,0,0,0,0); break;
  2779.                 case 15 : simp_window(50,11,52,13,0,0,15,8,0,0,0,0,0); break;
  2780.             }
  2781.             gotoxy(2,2);
  2782.             putch(219);
  2783.             mou_on();
  2784.         }
  2785.         if(moubuttonpressed(0))
  2786.         {
  2787.             if((mousex > 44) & (mousex < 52) & (mousey > 5) & (mousey < 13))
  2788.             {
  2789.                 choice = 1;
  2790.             }
  2791.             else
  2792.             {
  2793.                 choice = 18;
  2794.             }
  2795.         }
  2796.         if(choice != 0)
  2797.         {
  2798.             break;
  2799.         }
  2800.     }
  2801.     mou_off();
  2802.     load_screen_buff();
  2803.     if(choice == 1)
  2804.     {
  2805.         color_code = i;
  2806.     }
  2807.     return(0);
  2808. }
  2809.  
  2810. /***************************************************************************
  2811.  
  2812.     this code changes the window parameters with option
  2813.  
  2814. ***************************************************************************/
  2815.  
  2816. void write_data(int record)
  2817. {
  2818.     write_file(o_data.data[win_num],"win.dat",16,(4056L * record) + 4036);
  2819. }
  2820.  
  2821. int get_color(void)
  2822. {
  2823.     int choice,i = 0,oldx = -1,oldy = -1,oldi = 7,mousex = 0,mousey = 0;
  2824.     char lable[5][20] = {"Foreground","Background","","Foreground","Background"};
  2825.  
  2826.     for(;;)
  2827.     {
  2828.         choice = 0;
  2829.         mouposition(&mousex,&mousey);
  2830.         if(((mousex != oldx) | (mousey != oldy)) & (mou_switch == 1))
  2831.         {
  2832.             mou_on();
  2833.             oldx = mousex;
  2834.             oldy = mousey;
  2835.             if((mousex > 43) & (mousex < 54))
  2836.             {
  2837.                 i = mousey - 20;
  2838.             }
  2839.         }
  2840.         if(bioskey(1))
  2841.         {
  2842.             switch(bioskey(0))
  2843.             {
  2844.                 case ESC : choice = 7; break;
  2845.                 case ENTER : choice = 1; break;
  2846.                 case CURSOR_UP : i = i - 1; break;
  2847.                 case CURSOR_DN : i = i + 1; break;
  2848.             }
  2849.         }
  2850.         if(i < 0)
  2851.         {
  2852.             i = 0;
  2853.         }
  2854.         if(i > 4)
  2855.         {
  2856.             i = 4;
  2857.         }
  2858.         if((oldi > i) & (i == 2))
  2859.         {
  2860.             i = 1;
  2861.         }
  2862.         if((oldi < i) & (i == 2))
  2863.         {
  2864.             i = 3;
  2865.         }
  2866.         if(oldi != i)
  2867.         {
  2868.             mou_off();
  2869.             load_screen_buff();
  2870.             oldi = i;
  2871.             if(i != 2)
  2872.             {
  2873.                 simp_window(46,i + 20,59,i + 20,0,2,14,1,1,8,0,0,0);
  2874.                 write_window(2,1,"%s",lable[i]);
  2875.             }
  2876.             mou_on();
  2877.         }
  2878.         if(moubuttonpressed(0))
  2879.         {
  2880.             if((mousex > 43) & (mousex < 54))
  2881.             {
  2882.                 switch(mousey)
  2883.                 {
  2884.                     case 20 :
  2885.                     case 21 :
  2886.                     case 22 :
  2887.                     case 23 : choice = 1; break;
  2888.                     default : choice = 7; break;
  2889.                 }
  2890.             }
  2891.             else
  2892.             {
  2893.                 choice = 7;
  2894.             }
  2895.         }
  2896.         if(choice != 0)
  2897.         {
  2898.             break;
  2899.         }
  2900.     }
  2901.     mou_off();
  2902.     load_screen_buff();
  2903.     if(choice == 1)
  2904.     {
  2905.         choice = i + 2;
  2906.     }
  2907.     switch(choice)
  2908.     {
  2909.         case 2 :
  2910.         case 3 :
  2911.         case 5 :
  2912.         case 6 : color_select();
  2913.              o_data.data[win_num][choice] = color_code;
  2914.              if(win_num == 8)
  2915.              {
  2916.                 o_data.hk_color = color_code;
  2917.              }
  2918.              break;
  2919.         case 7 : return(0);
  2920.     }
  2921.     save_data();
  2922.     return(1);
  2923. }
  2924.  
  2925.  
  2926. int mou_menu(void)
  2927. {
  2928.     int pick,choice,i = 0,old_i = 18,oldmx = -1,oldmy = - 1,mousex = 0,mousey = 0;
  2929.     char lable[12][22] = {"mouinstalled\(\)","moureset\(\)","moubuttonpressed\(\)",
  2930.         "mou_on\(\)","mou_off\(\)","mouhide\(\)","moushow\(\)",
  2931.         "mousetposition\(\)","mousetmaxposition\(\)","moubuttonreleased\(\)",
  2932.         "loadcurs\(\)","mouposition\(\)"};
  2933.  
  2934.     if(display_switch)
  2935.     {
  2936.         load_screen(3);
  2937.         call_window(21);
  2938.         call_menu(17,3,2);
  2939.         save_screen(4);
  2940.     }
  2941.     else
  2942.     {
  2943.         load_screen(4);
  2944.     }
  2945.     hide_cursor();
  2946.     display_switch = 1;
  2947.     save_screen_buff();
  2948.     for(;;)
  2949.     {
  2950.         choice = 0;
  2951.         mouposition(&mousex,&mousey);
  2952.         if((mousex != oldmx || mousey != oldmy) & (mou_switch == 1))
  2953.         {
  2954.             mou_on();
  2955.             oldmx = mousex;
  2956.             oldmy = mousey;
  2957.             if((mousex > 19) & (mousex < 46))
  2958.             {
  2959.                 i = mousey - 6;
  2960.             }
  2961.         }
  2962.         if(bioskey(1))
  2963.         {
  2964.             switch(bioskey(0))
  2965.             {
  2966.                 case ESC : choice = 14; break;
  2967.                 case CURSOR_DN : i = i + 1; break;
  2968.                 case CURSOR_UP : i = i - 1; break;
  2969.                 case ENTER : choice = 1; break;
  2970.             }
  2971.         }
  2972.         if(i < 0)
  2973.         {
  2974.             i = 0;
  2975.         }
  2976.         if(i > 11)
  2977.         {
  2978.             i = 11;
  2979.         }
  2980.         if(old_i != i)
  2981.         {
  2982.             old_i = i;
  2983.             mou_off();
  2984.             load_screen_buff();
  2985.             simp_window(20,6 + i,42,6 + i,o_data.data[7][0],o_data.data[7][1],
  2986.             o_data.data[7][2],o_data.data[7][3],o_data.data[7][4],
  2987.             o_data.data[7][5],o_data.data[7][6],o_data.data[7][7],0);
  2988.             write_window(2,1,"%s",lable[i]);
  2989.             mou_on();
  2990.         }
  2991.         if(moubuttonpressed(0))
  2992.         {
  2993.             if((mousex > 19) & (mousex < 46) & (mousey > 5) & (mousey < 18))
  2994.             {
  2995.                 choice = 1;
  2996.             }
  2997.             else
  2998.             {
  2999.                 choice = 14;
  3000.             }
  3001.         }
  3002.         if(choice != 0)
  3003.         {
  3004.             break;
  3005.         }
  3006.     }
  3007.     mou_off();
  3008.     load_screen_buff();
  3009.     pick = 1;
  3010.     if(choice == 1)
  3011.     {
  3012.         choice = i + 2;
  3013.     }
  3014.     switch(choice)
  3015.     {
  3016.         case 2 :
  3017.         case 3 :
  3018.         case 4 :
  3019.         case 5 :
  3020.         case 6 :
  3021.         case 7 :
  3022.         case 8 :
  3023.         case 9 :
  3024.         case 10 :
  3025.         case 11 :
  3026.         case 12 :
  3027.         case 13 : view_tut(i + 53,"MOUSE20 FUNGTIONS");break;
  3028.         case 14 : pick = 0; break;
  3029.     }
  3030.     display_switch = 0;
  3031.     unpopup_window(21);
  3032.     return(pick);
  3033.  
  3034.  
  3035. }
  3036.